Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C++] Inserire stringa con gli spazi (es. nome e cognome)

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

  2. #2

    [RISOLTO]]

    Ho risolto, utilizzando il cin.ignore() rimuovendo gli \n precedenti che mi infastidivano.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.