Salve, in questo programma voglio leggere in ingresso anche dei nomi e dei cognomi con gli spazi. Come devo fare? Quando metto lo spazio passa in automatico alla successiva cin.
Ho già provato con la gets e la getline ma mi da lo stesso errore. Come posso modificare?
GRAZIE MILLE IN ANTICIPO
codice:#include <iostream> using namespace std; struct anagrafica { string nome; string cognome; int eta; string dataNascita; int classe; char sezione; string valido = "falso"; }; void Inserisci(anagrafica persona[], int quantita) { int i; for (i=0;i<quantita;i++) { cout << endl; cout << "Nome: "; cin >> persona[i].nome; cout << "Cognome: "; cin >> persona[i].cognome; cout << "Eta': "; cin >> persona[i].eta; cout << "Data di nascita: "; cin >> persona[i].dataNascita; cout << "Classe: "; cin >> persona[i].classe; cout << "Sezione: "; cin >> persona[i].sezione; cout << "Valido: (inserire in minuscolo vero o falso): "; cin >> persona[i].valido; cout << endl; } } void Visualizza(anagrafica persona[], int quantita) { int i; for (i=0;i<quantita;i++) { cout << endl; cout << "Nome: " << persona[i].nome << endl; cout << "Cognome: " << persona[i].cognome << endl; cout << "Eta': " << persona[i].eta << endl; cout << "Data di nascita: " << persona[i].dataNascita << endl; cout << "Classe:" << persona[i].classe << endl; cout << "Sezione: " << persona[i].sezione << endl; cout << "Valido: " << persona[i].valido << endl; cout << endl; } } void Azzera(anagrafica persona[], int quantita) { int i; for (i=0;i<quantita;i++) { persona[i].nome = "**********"; persona[i].cognome = "**********"; persona[i].eta = (int)NULL; persona[i].dataNascita = "**/**/****"; persona[i].classe = (int)NULL; persona[i].sezione = (char)NULL; persona[i].valido = "falso"; } } int main() { anagrafica studenti[50]; //creazione vettore di capienza 50 che conterrà i records di tipo anagrafica int quanti = 0; int scelta; //variabile che contiene il valore della scelta dell'operazione da eseguire nel programma bool ripeti = true; //variabile che rimane vera ogni volta che voglio far ripetere la visualizzazione del menu while (ripeti == true) { //fintanto che la condizione è vera... esegui tutto quello che sta dentro il while cout << "1) Azzera tutto" << endl; cout << "2) Inserisci" << endl; cout << "3) Visualizza" << endl; cout << "4) Termina programma" << endl; cout << endl; cout << "Operazione da fare: "; cin >> scelta; //leggo il numero dell'operazione da eseguire if (scelta == 1) { Azzera(studenti, quanti); system("PAUSE"); //attesa di premere un tasto prima di pulire la schermata } if (scelta == 2) { cout << "Quanti records devi inserire? --> "; cin >> quanti; Inserisci(studenti, quanti); } if (scelta == 3) { Visualizza(studenti,quanti); system("PAUSE"); } if (scelta == 4) { ripeti = false; system("PAUSE"); } } return 0; }

Rispondi quotando