Oppure

Loading
18/01/09 18:14
bip
Allora il codice è:

do{
cout<<"\nnome\n";
cin>>user[z].nome;
cout<<"\ncognome\n";
cin>>user[z].cognome;
cout<<"\nvia\n";
cin>>user[z].via;
cout<<"\nlocalità\n";
cin>>user[z].localita;
cout<<"\nsigla provincia\n";
cin>>user[z].provincia;
cout<<"\ninserisci email\n";
cin>>user[z].email;
cout<<"\ncodice fiscale\n";
cin>>user[z].codicefiscale;
cout<<"termina inserimonto dati: con 'S stoppare e con 'C continuare'\n";
cin>>o;
++z;
}while(o != 's'&& z < 20);

cout<<"\n\n\n\tdati inseriti in memoria,\n";
cout<<"\tse i dati inseriti sono errati permi di nuovo 0";
for(int x=0;x<z;x++){
cout<<"\nnome\n"<<user[x].nome;
cout<<"\ncognonome\n"<<user[x].cognome;
cout<<"\nvia\n"<<user[x].via;
cout<<"\nlocalità\n"<<user[x].localita;
cout<<"\nsigla provincia\n"<<user[x].provincia;
cout<<"\nemail inserita\n"<<user[x].email;
cout<<"\ncodice fiscale\n"<<user[x].codicefiscale<<"\n\n\n";
}

ma se per caso un nome una via ha uno spzio es: valle dei fiori una volta che premo invio mi salta
tanti cin quanti spazi ho usato che posso fare per evitate questa cosa?
P.s. ho provato a usare gets() ma mi salta da subito e mi parte da località
:ot::grr::ot:
aaa
18/01/09 18:28
iGuLy
Usa la getline().
Esempio:
getline(cin, stringa); // Per le std::string
getline(cin, stringa, size); // Per le altre (char[...])
aaa
18/01/09 20:09
bip
igully cout<<"\nnome\n";
cin.getline(user[z].nome,20);
cout<<"\ncognome\n";
cin.getline(user[z].cognome,20);
cout<<"\nvia\n";
cin.getline(user[z].via,20);
cout<<"\nlocalità\n";
cin.getline(user[z].localita,25);
cout<<"\nsigla provincia\n";
cin.getline(user[z].provincia,3);
cout<<"\ninserisci email\n";
cin.getline(user[z].email,20);
cout<<"\ncodice fiscale\n";
cin.getline(user[z].codicefiscale,16);
cout<<"termina inserimonto dati: con 'S stoppare e con 'C continuare'\n";

adesso l'ho modificato così ma quando schiaccio 0 invio che è il numero che ho deciso per l'inserimento mi salta nome e mi va su cognome xchè?
che posso fare?
Ultima modifica effettuata da bip 18/01/09 20:09
aaa
19/01/09 18:37
iGuLy
Postato originariamente da bip:

igully cout<<"\nnome\n";
cin.getline(user[z].nome,20);
cout<<"\ncognome\n";
cin.getline(user[z].cognome,20);
cout<<"\nvia\n";
cin.getline(user[z].via,20);
cout<<"\nlocalità\n";
cin.getline(user[z].localita,25);
cout<<"\nsigla provincia\n";
cin.getline(user[z].provincia,3);
cout<<"\ninserisci email\n";
cin.getline(user[z].email,20);
cout<<"\ncodice fiscale\n";
cin.getline(user[z].codicefiscale,16);
cout<<"termina inserimonto dati: con 'S stoppare e con 'C continuare'\n";

adesso l'ho modificato così ma quando schiaccio 0 invio che è il numero che ho deciso per l'inserimento mi salta nome e mi va su cognome xchè?
che posso fare?

Se ho capito bene, quando tu hai finito di inserire e vuoi ricominciare da capo ti salta il campo(se non è cosi rispiega che non ho capito molto). Nel caso in cui io abbia capito, ti consiglierei di provare a ripulire il buffer stdin prima di prendere in input dati:
...
fflush(stdin);
...

aaa
25/01/09 9:34
bip
igully vediamo se riesco essere chiaro:
appena inizia il ciclo while non inizia con il nome e chiedendomi di inserire il nome ma salta l'inserimento nome e mi chiede di insereire partendo dal cognome.. cioè dovrebbe stamparmi a video nome e il cursore che mi faccia mettere nome poi cognome e cusore per cognome ecc... invece parte il ciclo mi stampa a video nome e subito cognome e il cognome posso metterlo mentre il nome no (gia dal primo ciclo mi succede questo non centra ripulire la memoria)....
aaa
27/01/09 17:11
bip
aiuto aiuto quacuno mi aiuti non ne vengo fuori:ot::alert::ot:
aaa
28/01/09 10:09
munkaka
come ti ha detto iGuLy devi mettere
fflush(stdin);
prima dei getline e il problema si risolve
aaa