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:
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: