Domanda Aiuto programma C++

Anonimuo

Utente Iron
16 Dicembre 2022
3
2
0
7
Buongiorno a tutti! Sto riscontrando un piccolo problema con questo programma. In poche parole devo creare un'agenda che permetta l'inserimento/eliminazione/ricerca di un'anagrafica.
Se compilo il programma tutto ok, ma una volta che lo eseguo va in loop dopo aver inserito tutti i dati dell'anagrafica. Soluzioni?
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
int i,h,j;
struct anagrafica {
char nome[20];
char cognome[20];
int unsigned eta;
char indirizzo[20];
char cap [5];
char citta[10];
char provincia[10];
char telefono [9];
};
anagrafica persona[10];
int main(){
cout<<"Benvenuti nella mia agenda digitale"<<endl;
cout<<"Premi i seguenti numeri per:"<<endl<<"1-x inserire una nuova anagrafica"<<endl;
cout<<"2-x eliminare un'anagrafica"<<endl<<"3-x ricercare un'anagrafica"<<endl;
cout<<"0- uscire dal programma"<<endl;
cin>>h;
while(h!=0){
switch (h) {
case 1://Inserimento anagrafica
cout<<"Inserire il nome"<<endl;
cin>>persona[0].nome;
cout<<"Inserire il cognome"<<endl;
cin>>persona[0].cognome;
cout<<"Inserire l'eta"<<endl;
cin>>persona[0].eta;
cout<<"Inserire l'indirizzo'"<<endl;
cin>>persona[0].indirizzo;
cout<<"Inserire il CAP"<<endl;
cin>>persona[0].cap;
cout<<"Inserire la citta'"<<endl;
cin>>persona[0].citta;
cout<<"Inserire la provincia"<<endl;
cin>>persona[0].provincia;
cout<<"Inserire il telefono"<<endl;
cin>>persona[0].telefono;
break;
case 2://Eliminazione anagrafica
cout<<"Per favore inserisca il numero dell'anagrafica che vuole eliminare"<<endl;
cin>>j;
cout<<"Prego proceda con l'eliminazione"<<endl<<"cominciamo dal nome"<<endl;;
cin>>persona[j].nome;
cout<<"Cognome"<<endl;
cin>>persona[j].cognome;
cout<<"eta'"<<endl;
cin>>persona[j].eta;
cout<<"Indirizzo"<<endl;
cin>>persona[j].indirizzo;
cout<<"CAP"<<endl;
cin>>persona[j].cap;
cout<<"Citta'"<<endl;
cin>>persona[j].citta;
cout<<"Provincia"<<endl;
cin>>persona[j].provincia;
cout<<"Telefono"<<endl;
cin>>persona[j].telefono;
cout<<"L'eliminazione e' avvenuta con successo!!"<<endl;
break;
case 3: //Ricerca anagrafica
cout<<"Prego inserisca il cognome della persona che si vuole cercare"<<endl;
cin>>j;
for(i=0;i<10;i++)
if(persona.cognome=="Francesco"){
cout<<persona.nome<<endl<<persona.cognome<<endl<<persona.eta<<endl<<persona.indirizzo<<endl;
cout<<persona.cap<<endl<<persona.citta<<endl<<persona.provincia<<endl<<persona.telefono<<endl;
}
break;
default:
cout<<"Benvenuti nella mia agenda digitale"<<endl;
cout<<"Premi i seguenti numeri per:"<<endl<<"1-x inserire una nuova anagrafica"<<endl;
cout<<"2-x eliminare un'anagrafica"<<endl<<"3-x ricercare un'anagrafica"<<endl;
cout<<"0- uscire dal programma"<<endl;
break;
}}
cout<<persona[0].nome<<endl<<persona[0].cognome<<endl<<persona[0].eta<<endl<<persona[0].indirizzo<<endl;
cout<<persona[0].cap<<endl<<persona[0].citta<<endl<<persona[0].provincia<<endl<<persona[0].telefono<<endl;
system("pause");
}
 
Usa il tag CODE per postare il codice (colora la sintassi e mantiene la spaziatura). Così a occhio vedo diversi problemi: accedi a persona[0] invece di usare un indice (sempre primo contatto in rubrica), il motivo per cui entri in loop infinito è che mostri il menu e leggi il numero dell'operazione solo una volta, prima del while, quindi dopo aver inserito un qualunque cosa non sia 0 sarà come se premessi quello per sempre (non fai cin nuovamente o dentro al while), nel for della ricerca (3) devi accedere a persona[i], non a persona. Probabilmente ci sono altri problemi, andrebbe riscritto, ma se inizi a correggere e ripostarlo con il tag code puoi sistemarlo.
 
  • Mi piace
Reazioni: Anonimuo
Usa il tag CODE per postare il codice (colora la sintassi e mantiene la spaziatura). Così a occhio vedo diversi problemi: accedi a persona[0] invece di usare un indice (sempre primo contatto in rubrica), il motivo per cui entri in loop infinito è che mostri il menu e leggi il numero dell'operazione solo una volta, prima del while, quindi dopo aver inserito un qualunque cosa non sia 0 sarà come se premessi quello per sempre (non fai cin nuovamente o dentro al while), nel for della ricerca (3) devi accedere a persona[i], non a persona. Probabilmente ci sono altri problemi, andrebbe riscritto, ma se inizi a correggere e ripostarlo con il tag code puoi sistemarlo.
Ti ringrazio! Provo a modificarlo e vediamo se riesco a correggere un po' di errori. 👌