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;
}