Smoker223
Utente Attivo
- Messaggi
- 530
- Reazioni
- 52
- Punteggio
- 57
Salve, ho un problema con un programmino in c++:
Questo è il codice che mi crea problemi:
Devo inserire dei dati dei clienti in una struttura dichiarata globalmente.
Il problema sorge quando devo inserire il nome del cliente (cliente[num].nome).
con cin>> il sottoprogramma funge ma non legge oltre il primo spazio mentre con cin.getline la compilazione avviene ma la riga viene ignorata.
Il getline nel main funziona a dovere ma viene ignorato se lo metto in un sottoprogramma, dove sbaglio?
EDIT:
Ho risolto con il seguente codice:
con il codice:
cin.ignore();
cin.getline(cliente[num].nome,64);
qualcuno può spiegarmi perchè è necessario cin.ignore();?
Questo è il codice che mi crea problemi:
void creacliente(){
int num;
for (num=0;;num++){
if (cliente[num].stato==0)
break;
}
cout<<endl<<"Cliente '"<<num<<"'"<<endl;
cout<<"Inserisci il nome del cliente: ";
1)cin.getline(cliente[num].nome,64);
2)cin>>cliente[num].nome;
cout<<"Inserisci il numero dei pezzi ordinati: ";
cin>>cliente[num].pezzi_ordinati;
cout<<"Inserisci il prezzo per singolo pezzo: ";
cin>>cliente[num].prezzo_pezzi;
cout<<"\nInserisci lo stato del pagamento di "<<cliente[num].nome<<"\n1 - PAGATO\n2 - MOROSO\n3 - IN RITARDO\nStato: ";
cin>>cliente[num].stato;
}
int num;
for (num=0;;num++){
if (cliente[num].stato==0)
break;
}
cout<<endl<<"Cliente '"<<num<<"'"<<endl;
cout<<"Inserisci il nome del cliente: ";
1)cin.getline(cliente[num].nome,64);
2)cin>>cliente[num].nome;
cout<<"Inserisci il numero dei pezzi ordinati: ";
cin>>cliente[num].pezzi_ordinati;
cout<<"Inserisci il prezzo per singolo pezzo: ";
cin>>cliente[num].prezzo_pezzi;
cout<<"\nInserisci lo stato del pagamento di "<<cliente[num].nome<<"\n1 - PAGATO\n2 - MOROSO\n3 - IN RITARDO\nStato: ";
cin>>cliente[num].stato;
}
Devo inserire dei dati dei clienti in una struttura dichiarata globalmente.
Il problema sorge quando devo inserire il nome del cliente (cliente[num].nome).
con cin>> il sottoprogramma funge ma non legge oltre il primo spazio mentre con cin.getline la compilazione avviene ma la riga viene ignorata.
Il getline nel main funziona a dovere ma viene ignorato se lo metto in un sottoprogramma, dove sbaglio?
EDIT:
Ho risolto con il seguente codice:
void creacliente(){
int num;
for (num=0;;num++){
if (cliente[num].stato==0)
break;
}
cout<<endl<<"Cliente '"<<num<<"'"<<endl;
cout<<"Inserisci il nome del cliente: ";
cin.ignore();
cin.getline(cliente[num].nome,64);
cout<<"Inserisci il numero dei pezzi ordinati: ";
cin>>cliente[num].pezzi_ordinati;
cout<<"Inserisci il prezzo per singolo pezzo: ";
cin>>cliente[num].prezzo_pezzi;
cout<<"\nInserisci lo stato del pagamento di "<<cliente[num].nome<<"\n1 - PAGATO\n2 - MOROSO\n3 - IN RITARDO\nStato: ";
cin>>cliente[num].stato;
}
int num;
for (num=0;;num++){
if (cliente[num].stato==0)
break;
}
cout<<endl<<"Cliente '"<<num<<"'"<<endl;
cout<<"Inserisci il nome del cliente: ";
cin.ignore();
cin.getline(cliente[num].nome,64);
cout<<"Inserisci il numero dei pezzi ordinati: ";
cin>>cliente[num].pezzi_ordinati;
cout<<"Inserisci il prezzo per singolo pezzo: ";
cin>>cliente[num].prezzo_pezzi;
cout<<"\nInserisci lo stato del pagamento di "<<cliente[num].nome<<"\n1 - PAGATO\n2 - MOROSO\n3 - IN RITARDO\nStato: ";
cin>>cliente[num].stato;
}
con il codice:
cin.ignore();
cin.getline(cliente[num].nome,64);
qualcuno può spiegarmi perchè è necessario cin.ignore();?
Ultima modifica: