|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 153
|
problema compilazione c++
salve,
sto creando un programma che simuli grosso modo il codice fiscale. tuttavia non funziona come il calcolo del codice fiscale vero e proprio. ecco il codice: #include<iostream> #include<string> #include<cstdlib> string calcoloLuogo(string luogo); string calcoloData(string data); string calcoloStringa(string stringa); string calcoloCodiceFiscale(string nome, string cognome, string luogo, string dataNascita); void acquisDatiAnagrafici(int indice, string &nome, string &cognome, string &luogo, string &dataNascita); void acquisComponenti(int &nComponenti); void stampaRisultato(string nome, string cognome, string luogo, string dataNascita, string codice); using namespace std; int main(){ int nComponenti; string nome,cognome,dataNascita,luogo,codice; acquisComponenti(nComponenti); for (int i=0;i<nComponenti;i++){ acquisDatiAnagrafici(i, nome, cognome, luogo, dataNascita); codice=calcoloCodiceFiscale(nome,cognome,luogo,dataNascita); stampaRisultato(nome,cognome,luogo,dataNascita,codice); } return 0; } void stampaRisultato(string nome, string cognome, string luogo, string dataNascita, string codice){ cout<<"___________________________________________"<<endl; cout<<"nome: "<<nome<<endl; cout<<"cognome: "<<cognome<<endl; cout<<"data di nascita: "<<dataNascita<<endl; cout<<"luogo: "<<luogo<<endl; cout<<"____________________________________________"<<endl<<endl; cout<<"Il tuo codice fiscale: "<<codice<<endl; } void acquisComponenti(int &nComponenti){ cout<<"Si prega di inserire il numero dei componenti della tua famiglia: "; cin>>nComponenti; while (nComponenti<1){ cout<<"ERRORE: si prega di reinserire il numero dei componenti della tua famiglia: "; cin>>nComponenti; } system("cls"); } void acquisDatiAnagrafici(int indice, string &nome, string &cognome, string &luogo, string &dataNascita){ cout<<"inserire il nome del componente "<<indice+1<< " : "; cin>>nome; cin.ignore(); // pulisce il flusso in input dopo aver prelevato il nome cout<<"inserire il cognome del componente "<<indice+1<< " : "; cin>>cognome; cin.ignore(); // pulisce il flusso in input dopo aver prelevato il cognome cout<<"inserire la data nascista del componente (gg/mese/anno) "<<indice+1<< " : "; cin>>dataNascita; cin.ignore(); // pulisce il flusso in input dopo aver prelevato la data cout<<"inserire il luogo di nascita del componente "<<indice+1<<" : "; cin>>luogo; cin.ignore(); // pulisce il flusso in input dopo aver prelevato il luogo system("cls"); } string calcoloCodiceFiscale(string nome, string cognome, string luogo, string dataNascita){ stringa=calcoloStringa(nome); return (calcoloStringa(cognome) + calcoloData(dataNascita) + calcoloLuogo(luogo)); } string calcoloStringa(string stringa){ string valore; int lunghezza; lunghezza=stringa.lenght; if (lunghezza >= 3){ valore=stringa.substr(0,3); } else { for(int i=0; i<(3 - lunghezza); i++){ valore=valore+"x"; } } return valore; } string calcoloData(string data){ string anno,mese,giorno; anno=data.substr(8,2); mese=data.substr(0,1); giorno=data.substr(0,2); return (anno+mese+giorno); } string calcoloLuogo(string luogo){ string valore; if ((luogo=="Potenza") or (luogo=="potenza") or (luogo=="POTENZA")){ valore="PZ"; } else { if ((luogo=="Matera") or (luogo=="matera") or (luogo=="MATERA")){ valore="MT"; } } return valore; } ecco gli errori del compilatore g++ sotto windows: C:\Users\pc\Downloads>g++ a.cpp a.cpp:5:1: error: 'string' does not name a type string calcoloLuogo(string luogo); ^ a.cpp:6:1: error: 'string' does not name a type string calcoloData(string data); ^ a.cpp:7:1: error: 'string' does not name a type string calcoloStringa(string stringa); ^ a.cpp:8:1: error: 'string' does not name a type string calcoloCodiceFiscale(string nome, string cognome, string luogo, string d ataNascita); ^ a.cpp:9:39: error: 'string' has not been declared void acquisDatiAnagrafici(int indice, string &nome, string &cognome, string &lu ogo, string &dataNascita); ^ a.cpp:9:53: error: 'string' has not been declared void acquisDatiAnagrafici(int indice, string &nome, string &cognome, string &lu ogo, string &dataNascita); ^ a.cpp:9:70: error: 'string' has not been declared void acquisDatiAnagrafici(int indice, string &nome, string &cognome, string &lu ogo, string &dataNascita); ^ a.cpp:9:85: error: 'string' has not been declared void acquisDatiAnagrafici(int indice, string &nome, string &cognome, string &lu ogo, string &dataNascita); ^ a.cpp:11:22: error: variable or field 'stampaRisultato' declared void void stampaRisultato(string nome, string cognome, string luogo, string dataNasc ita, string codice); ^ a.cpp:11:22: error: 'string' was not declared in this scope a.cpp:11:22: note: suggested alternative: In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iosfwd:39:0, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ios:38, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ostream:38, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iostream:39, from a.cpp:1: c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stringfwd.h:62:33: note: 'std: :string' typedef basic_string<char> string; ^ a.cpp:11:35: error: 'string' was not declared in this scope void stampaRisultato(string nome, string cognome, string luogo, string dataNasc ita, string codice); ^ a.cpp:11:35: note: suggested alternative: In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iosfwd:39:0, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ios:38, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ostream:38, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iostream:39, from a.cpp:1: c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stringfwd.h:62:33: note: 'std: :string' typedef basic_string<char> string; ^ a.cpp:11:51: error: 'string' was not declared in this scope void stampaRisultato(string nome, string cognome, string luogo, string dataNasc ita, string codice); ^ a.cpp:11:51: note: suggested alternative: In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iosfwd:39:0, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ios:38, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ostream:38, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iostream:39, from a.cpp:1: c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stringfwd.h:62:33: note: 'std: :string' typedef basic_string<char> string; ^ a.cpp:11:65: error: 'string' was not declared in this scope void stampaRisultato(string nome, string cognome, string luogo, string dataNasc ita, string codice); ^ a.cpp:11:65: note: suggested alternative: In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iosfwd:39:0, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ios:38, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ostream:38, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iostream:39, from a.cpp:1: c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stringfwd.h:62:33: note: 'std: :string' typedef basic_string<char> string; ^ a.cpp:11:85: error: 'string' was not declared in this scope void stampaRisultato(string nome, string cognome, string luogo, string dataNasc ita, string codice); ^ a.cpp:11:85: note: suggested alternative: In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iosfwd:39:0, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ios:38, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ostream:38, from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iostream:39, from a.cpp:1: c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stringfwd.h:62:33: note: 'std: :string' typedef basic_string<char> string; ^ a.cpp: In function 'int main()': a.cpp:20:60: error: invalid initialization of reference of type 'int&' from expr ession of type 'std::string {aka std::basic_string<char>}' acquisDatiAnagrafici(i, nome, cognome, luogo, dataNascita); ^ a.cpp:9:6: error: in passing argument 2 of 'void acquisDatiAnagrafici(int, int&, int&, int&, int&)' void acquisDatiAnagrafici(int indice, string &nome, string &cognome, string &lu ogo, string &dataNascita); ^ a.cpp:21:61: error: 'calcoloCodiceFiscale' was not declared in this scope codice=calcoloCodiceFiscale(nome,cognome,luogo,dataNascita); ^ a.cpp:22:56: error: 'stampaRisultato' was not declared in this scope stampaRisultato(nome,cognome,luogo,dataNascita,codice); ^ a.cpp: In function 'std::string calcoloCodiceFiscale(std::string, std::string, s td::string, std::string)': a.cpp:64:2: error: 'stringa' was not declared in this scope stringa=calcoloStringa(nome); ^ a.cpp:64:29: error: 'calcoloStringa' was not declared in this scope stringa=calcoloStringa(nome); ^ a.cpp:65:59: error: 'calcoloData' was not declared in this scope return (calcoloStringa(cognome) + calcoloData(dataNascita) + calcoloLuogo(luog o)); ^ a.cpp:65:81: error: 'calcoloLuogo' was not declared in this scope return (calcoloStringa(cognome) + calcoloData(dataNascita) + calcoloLuogo(luog o)); ^ a.cpp: In function 'std::string calcoloStringa(std::string)': a.cpp:71:20: error: 'std::string' has no member named 'lenght' lunghezza=stringa.lenght; ^ cosa riguardano gli errori |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 153
|
ho aggiornato il codice.
ora il programma riesco a compilarlo correttamente. il problema è che una volta che sono inseriti i dati, si chiude senza far uscire nessun risultato. ecco il codice : #include<iostream> #include<cstdlib> #include<string> using namespace std; string calcoloLuogo(string luogo); string calcoloData(string giorno, string mese, string anno); string calcoloStringa(string stringa); string calcoloCodiceFiscale(string nome, string cognome, string luogo, string giorno, string mese, string anno); void acquisDatiAnagrafici(int indice, string &nome, string &cognome, string &luogo, string &giorno, string &mese, string& anno); void acquisComponenti(int &nComponenti); void stampaRisultato(string nome, string cognome, string luogo, string giorno, string mese, string anno, string codice); int main(){ int nComponenti; string nome, cognome, giorno, mese, anno, luogo, codice; acquisComponenti(nComponenti); for (int i=0;i<nComponenti;i++){ acquisDatiAnagrafici(i, nome, cognome, luogo, giorno, mese, anno); codice=calcoloCodiceFiscale(nome, cognome, luogo, giorno, mese, anno); stampaRisultato(nome, cognome, luogo, giorno, mese, anno, codice); } system("pause"); } void stampaRisultato(string nome, string cognome, string luogo, string giorno, string mese, string anno, string codice){ cout<<"--------------------------------------------"<<endl; cout<<"nome: "<<nome<<endl; cout<<"cognome: "<<cognome<<endl; cout<<"data di nascita: "<<giorno<<"/"<<mese<<"/"<<anno<<endl; cout<<"luogo: "<<luogo<<endl; cout<<"--------------------------------------------"<<endl; cout<<"Il tuo codice fiscale: "<<codice<<endl; cout<<"--------------------------------------------"<<endl; } void acquisComponenti(int &nComponenti){ cout<<"Benvenuto...Questo programma simula il calcolo del codice fiscale. \n\n"; cout<<"Inserire il numero di componenti della tua famiglia: "; cin>>nComponenti; while (nComponenti<1){ cout<<"ERRORE: si prega di reinserire il numero di componenti della tua famiglia: "; cin>>nComponenti; } system("cls"); } void acquisDatiAnagrafici(int indice, string &nome, string &cognome, string &luogo, string &giorno, string &mese, string &anno){ cout<<"inserire il nome del componente "<<indice+1<< " : "; cin>>nome; cin.ignore(); // pulisce il flusso in input dopo aver prelevato il nome cout<<endl<<"inserire il cognome del componente "<<indice+1<< " : "; cin>>cognome; cin.ignore(); // pulisce il flusso in input dopo aver prelevato il cognome cout<<endl<<"inserire la data nascita del componente "<<indice+1<< " : "<<endl<<endl; cout<<"giorno (gg): "; cin>>giorno; cin.ignore(); cout<<"mese (mese): "; cin>>mese; cin.ignore(); cout<<"anno (nnnn): "; cin>>anno; cin.ignore(); // pulisce il flusso in input dopo aver prelevato la data cout<<endl<<"inserire il luogo di nascita del componente "<<indice+1<<" : "; cin>>luogo; cin.ignore(); // pulisce il flusso in input dopo aver prelevato il luogo } string calcoloCodiceFiscale(string nome, string cognome, string luogo, string giorno, string mese, string anno){ return (calcoloStringa(nome) + calcoloStringa(cognome) + calcoloData(giorno,mese,anno) + calcoloLuogo(luogo)); } string calcoloStringa(string stringa){ string valore; int lunghezza; lunghezza=stringa.length(); if (lunghezza >= 3){ valore=stringa.substr(0,3); } else { for(int i=0; i<(3-lunghezza); i++){ valore=valore+"X"; } } return valore; } string calcoloData(string giorno, string mese, string anno){ return (anno.substr(8,2) + mese.substr(0,1) + giorno.substr(0,2)); } string calcoloLuogo(string luogo){ string valore; if ((luogo=="Potenza") or (luogo=="potenza") or (luogo=="POTENZA")){ valore="PZ"; } else { if ((luogo=="Matera") or (luogo=="matera") or (luogo=="MATERA")){ valore="MT"; } else { valore="XX"; } } return valore; } |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Porca l'oca, ci vuole tanto ad usare i tag CODE???
Codice:
#include<iostream>
#include<cstdlib>
#include<string>
using namespace std;
string calcoloLuogo(string luogo);
string calcoloData(string giorno, string mese, string anno);
string calcoloStringa(string stringa);
string calcoloCodiceFiscale(string nome, string cognome, string luogo, string giorno, string mese, string anno);
void acquisDatiAnagrafici(int indice, string &nome, string &cognome, string &luogo, string &giorno, string &mese, string& anno);
void acquisComponenti(int &nComponenti);
void stampaRisultato(string nome, string cognome, string luogo, string giorno, string mese, string anno, string codice);
int main(){
int nComponenti;
string nome, cognome, giorno, mese, anno, luogo, codice;
acquisComponenti(nComponenti);
for (int i=0;i<nComponenti;i++){
acquisDatiAnagrafici(i, nome, cognome, luogo, giorno, mese, anno);
codice=calcoloCodiceFiscale(nome, cognome, luogo, giorno, mese, anno);
stampaRisultato(nome, cognome, luogo, giorno, mese, anno, codice);
}
system("pause");
}
void stampaRisultato(string nome, string cognome, string luogo, string giorno, string mese, string anno, string codice){
cout<<"--------------------------------------------"<<endl;
cout<<"nome: "<<nome<<endl;
cout<<"cognome: "<<cognome<<endl;
cout<<"data di nascita: "<<giorno<<"/"<<mese<<"/"<<anno<<endl;
cout<<"luogo: "<<luogo<<endl;
cout<<"--------------------------------------------"<<endl;
cout<<"Il tuo codice fiscale: "<<codice<<endl;
cout<<"--------------------------------------------"<<endl;
}
void acquisComponenti(int &nComponenti){
cout<<"Benvenuto...Questo programma simula il calcolo del codice fiscale. \n\n";
cout<<"Inserire il numero di componenti della tua famiglia: ";
cin>>nComponenti;
while (nComponenti<1){
cout<<"ERRORE: si prega di reinserire il numero di componenti della tua famiglia: ";
cin>>nComponenti;
}
system("cls");
}
void acquisDatiAnagrafici(int indice, string &nome, string &cognome, string &luogo, string &giorno, string &mese, string &anno){
cout<<"inserire il nome del componente "<<indice+1<< " : ";
cin>>nome;
cin.ignore(); // pulisce il flusso in input dopo aver prelevato il nome
cout<<endl<<"inserire il cognome del componente "<<indice+1<< " : ";
cin>>cognome;
cin.ignore(); // pulisce il flusso in input dopo aver prelevato il cognome
cout<<endl<<"inserire la data nascita del componente "<<indice+1<< " : "<<endl<<endl;
cout<<"giorno (gg): ";
cin>>giorno;
cin.ignore();
cout<<"mese (mese): ";
cin>>mese;
cin.ignore();
cout<<"anno (nnnn): ";
cin>>anno;
cin.ignore(); // pulisce il flusso in input dopo aver prelevato la data
cout<<endl<<"inserire il luogo di nascita del componente "<<indice+1<<" : ";
cin>>luogo;
cin.ignore(); // pulisce il flusso in input dopo aver prelevato il luogo
}
string calcoloCodiceFiscale(string nome, string cognome, string luogo, string giorno, string mese, string anno){
return (calcoloStringa(nome) + calcoloStringa(cognome) + calcoloData(giorno,mese,anno) + calcoloLuogo(luogo));
}
string calcoloStringa(string stringa){
string valore;
int lunghezza;
lunghezza=stringa.length();
if (lunghezza >= 3){
valore=stringa.substr(0,3);
} else {
for(int i=0; i<(3-lunghezza); i++){
valore=valore+"X";
}
}
return valore;
}
string calcoloData(string giorno, string mese, string anno){
return (anno.substr(8,2) + mese.substr(0,1) + giorno.substr(0,2));
}
string calcoloLuogo(string luogo){
string valore;
if ((luogo=="Potenza") or (luogo=="potenza") or (luogo=="POTENZA")){
valore="PZ";
} else {
if ((luogo=="Matera") or (luogo=="matera") or (luogo=="MATERA")){
valore="MT";
}
else {
valore="XX";
}
}
return valore;
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:45.



















