PDA

Visualizza la versione completa : [C++] Inserire stringa con gli spazi (es. nome e cognome)


easytechno
07-04-2020, 04:35
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



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

easytechno
07-04-2020, 05:55
Ho risolto, utilizzando il cin.ignore() rimuovendo gli \n precedenti che mi infastidivano.

Loading