Ultima modifica da un moderatore:
ciao ho un compito scolastico, scrivere il codice per la scrittura del codice fiscale, solo che sto avendo dei problemi con i vari casi dei nomi e dei cognomi, mi potete dare una mano a correggere il mio codice ?
C++:
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <algorithm>
#include <string>
#include <cctype>
using namespace std;
struct codice{
char nome[255];
char cognome[255];
char nascita[10];
char sesso[2];
};
void inserimento(codice &cod){
cout<<"inserisci il nome"<<endl;
cin>>cod.nome;
cout<<"inserisci il cognome"<<endl;
cin>>cod.cognome;
cout<<"inserisci la data di nascita gg/mm/aaaa"<<endl;
cin>>cod.nascita;
cout<<"inserisci il sesso"<<endl;
cin>>cod.sesso;
}
void costruzioneNome(char nome[3],codice &cod){
int c=0;
int v=0;
char consonanti[255];
char vocali[255];
string nom;
for(int i=0;cod.nome[i]!='\0';i++){
if(cod.nome[i]!='A'&&cod.nome[i]!='a'&&cod.nome[i]!='E'&&cod.nome[i]!='e'&&cod.nome[i]!='i'&&cod.nome[i]!='I'&&cod.nome[i]!='O'&&cod.nome[i]!='o'&&cod.nome[i]!='U'&&cod.nome[i]!='u'&&cod.nome[i]!=' '){
consonanti[c]=cod.nome[i];
if(consonanti[c]==cod.nome[i]){
c++;
}
}
}
for(int i=0;cod.nome[i]!='\0';i++){
if(cod.nome[i]=='A'||cod.nome[i]=='a'||cod.nome[i]=='E'||cod.nome[i]=='e'||cod.nome[i]=='I'||cod.nome[i]=='i'||cod.nome[i]=='O'||cod.nome[i]=='o'||cod.nome[i]=='U'||cod.nome[i]=='u'){
vocali[v]=cod.nome[i];
if(vocali[v]==cod.nome[i]){
v++;
}
}
}
cout<<"la c: "<<c<<" "<<consonanti<<endl;
cout<<"la v: "<<v<<" "<<vocali<<endl;
if(c>=4){ //caso 4 consonanti prende solo il primo il terzo e i quaroto (FUNZiONA)
nome[0]=consonanti[0];
nome[1]=consonanti[2];
nome[2]=consonanti[3];
}else if(c==3){ //caso tre consonanti primo secondo e terzo (FUNZiONA
nome[0]=consonanti[0];
nome[1]=consonanti[1];
nome[2]=consonanti[2];
}else if(c==2){//caso due consonanti piu prima vocale
nome[0]=consonanti[0];
nome[1]=consonanti[1];
nome[2]=vocali[0];
}else if(c==1){//caso una consonante
if(v>=2){ //una consonante e due vocali (FUNZiONA)
nome[0]=consonanti[0];
nome[1]=vocali[0];
nome[2]=vocali[1];
}else if(v==1){ //una consonante una vocale e la x
nome[0]=consonanti[0];
nome[1]=vocali[0];
nome[2]='X';
}
}else if(c==0){ //caso due vocali e la x
nome[0]=vocali[0];
nome[1]=vocali[1];
nome[2]='X';
}
}
void costruzioneCognome(char cog[3],codice &cod){
int c=0;
int v=0;
char consonanti[10];
char vocali[10];
for(int i=0;cod.nome[i]!='\0';i++){ //ricerca delle consonanti
if(cod.cognome[i]!='A'&&cod.cognome[i]!='a'&&cod.cognome[i]!='E'&&cod.cognome[i]!='e'&&cod.cognome[i]!='i'&&cod.cognome[i]!='I'&&cod.cognome[i]!='O'&&cod.cognome[i]!='o'&&cod.cognome[i]!='U'&&cod.cognome[i]!='u'&&cod.cognome[i]!=' '){
consonanti[c]=cod.cognome[i];
if(consonanti[c]==cod.cognome[i]){
c++;
}
}
}
for(int i=0;cod.nome[i]!='\0';i++){ //ricerca delle vocali
if(cod.cognome[i]=='A'||cod.cognome[i]=='a'||cod.cognome[i]=='E'||cod.cognome[i]=='e'||cod.cognome[i]=='i'||cod.cognome[i]=='I'||cod.cognome[i]=='O'||cod.cognome[i]=='o'||cod.cognome[i]=='U'||cod.cognome[i]=='u'&&cod.cognome[i]!=' '){
vocali[v]=cod.cognome[i];
if(vocali[v]==cod.cognome[i]){
v++;
}
}
}
cout<<"cognome consonanti "<<c<<" "<<consonanti<<endl;
cout<<"cognome vocali "<<v<<" "<<vocali<<endl;
if(c>=3){ //caso tre consonanti
cog[0]=consonanti[0];
cog[1]=consonanti[1];
cog[2]=consonanti[2];
}else if(c==2){ //caso due consonanti e una vocale
cog[0]=consonanti[0];
cog[1]=consonanti[1];
cog[2]=vocali[0];
}else if(c==1){ //caso una consonante
if(v>=2){ //una consonante e due vocali
cog[0]=consonanti[0];
cog[1]=vocali[0];
cog[2]=vocali[1];
}else if(v==1){//una consonante una vocale e la x
cog[0]=consonanti[0];
cog[1]=vocali[0];
cog[2]='X';
}
}else if(c==0){//due vocali e una x
cog[0]=vocali[0];
cog[1]=vocali[1];
cog[2]='X';
}
}
void caratteriNascita(char nascita[5],codice &cod){ //nella funzione inseriamo in un array i caratteri necessari per la nascita e il sesso
nascita[0]=cod.nascita[8];//due caratteri per l'anno
nascita[1]=cod.nascita[9];
if(cod.nascita[3]=='0'&&cod.nascita[4]=='1'){//i caratteri per il mese
nascita[2]='A';
}if(cod.nascita[3]=='0'&&cod.nascita[4]=='2'){
nascita[2]='B';
}if(cod.nascita[3]=='0'&&cod.nascita[4]=='3'){
nascita[2]='C';
}if(cod.nascita[3]=='0'&&cod.nascita[4]=='4'){
nascita[2]='D';
}if(cod.nascita[3]=='0'&&cod.nascita[4]=='5'){
nascita[2]='E';
}if(cod.nascita[3]=='0'&&cod.nascita[4]=='6'){
nascita[2]='H';
}if(cod.nascita[3]=='0'&&cod.nascita[4]=='7'){
nascita[2]='L';
}if(cod.nascita[3]=='0'&&cod.nascita[4]=='8'){
nascita[2]='M';
}if(cod.nascita[3]=='0'&&cod.nascita[4]=='9'){
nascita[2]='P';
}if(cod.nascita[3]=='1'&&cod.nascita[4]=='0'){
nascita[2]='R';
}if(cod.nascita[3]=='1'&&cod.nascita[4]=='1'){
nascita[2]='S';
}if(cod.nascita[3]=='1'&&cod.nascita[4]=='2'){
nascita[2]='T';
}
if(cod.sesso[0]=='M'||cod.sesso[0]=='M'){
nascita[3]=cod.nascita[0];
nascita[4]=cod.nascita[1];
}else if(cod.sesso[0]=='F'||cod.sesso[0]=='f'){
int n=(cod.nascita[0]);
nascita[3]=n+4;
nascita[4]=cod.nascita[1];
}
}
void costruzioneComuni(string &luog){
string luogo;
cout<<"inserisci il luogo di nascita: ";
cin>>luogo;
string cc,nc;
transform(luogo.begin(), luogo.end(), luogo.begin(), ::toupper);
ifstream file("citta.txt");
while(!file.eof()){
file>>cc;
file>>nc;
if(luogo.compare(nc)==0){
luog=cc;
file.close();
break;
}
}
}
void costruzioneCcarattereverificatore(){
}
int main(){
char nome[3];
char cognome[3];
char nascita[5];
string luogo;
codice cod;
inserimento(cod);
costruzioneNome(nome,cod);
costruzioneCognome(cognome,cod);
caratteriNascita(nascita,cod);
cout<<"il codice del nome: "<<nome<<endl;
cout<<"il codice del cognome: "<<cognome<<endl;
cout<<"il codice del giorno: "<<nascita<<endl;
}