PDA

View Full Version : problema compilazione c++


arsenico2009
10-01-2014, 22:57
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 :confused: :confused: :mc:

arsenico2009
11-01-2014, 18:38
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;
}

vendettaaaaa
11-01-2014, 19:23
Porca l'oca, ci vuole tanto ad usare i tag CODE???
#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;
}