Calcolatore codice fiscale

di il
8 risposte

Calcolatore codice fiscale

Salve sto scrivendo un codice che calcoli il codice fiscale,sto avendo dei problemi con la parte finale ovvero devo prendere il codice del comune che l'utente inserisce cioè se inserisce Milano il programma deve cercare nel file csv Milano e prendere il codice,il file è formato così Citta;XXXX e mi serve solo la parte XXXX e deve andare nella variabile che ho chiamata codice_comune

attualmente ho scritto questo.
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <algorithm>

using namespace std;
string file_content();


int main()
{
	char a_mesi[12] = {'A', 'B', 'C', 'D', 'E', 'H', 'L', 'M', 'P', 'R', 'S', 'T'};
	char vocale_cognome,vocale_nome;
	int len_cognome, len_nome,mese;
	string nome,cognome,anno,result,data, giorno,codice_comune,provincia,citta;
	string database = file_content();
	ifstream myfile("lista-codici.txt");
	bool femmina = false;
	int len_database = database.size();


	cout << "inserisci il tuo nome ";
	cin >> nome;
	cout << "inserisci il tuo cognome ";
	cin >> cognome;
	cout << "inserisci il giorno in cui sei nato ";
	cin >> giorno;
	cout << "inserisci il mese in cui sei nato ";
	cin >> mese;
	mese = mese-1;
	cout << "inserisci l'anno in cui sei nato ";
	cin >> anno;
	cout << "In che provincia sei nato? ";
	cin >> provincia;
	cout << "in che città sei nato? ";
	cin >> citta;
	int verifica;
	cout << "Se sei maschio digita 0 altrimenti digita 1 ";
	cin >> verifica;
	if (verifica == 1)
	{
		femmina = true;
	}

	len_nome = nome.size();
	len_cognome = cognome.size();
	for (int j = 0; j < len_cognome; j++)
	{
		if(cognome[j] == 'a' || cognome[j] == 'e' || cognome[j] == 'i' || cognome[j] == 'o' || cognome[j] == 'u' || cognome[j] == 'A' || cognome[j] == 'E' || cognome[j] == 'I' || cognome[j] == 'O' || cognome[j] == 'U')
		{
			vocale_cognome = cognome[j];
			cognome.erase(j, 1);
			len_cognome--;
			j--;
		}
	}
	for (int j = 0; j < len_nome; j++)
	{
		if (nome[j] == 'a' || nome[j] == 'e' || nome[j] == 'i' || nome[j] == 'o' || nome[j] == 'u' || nome[j] == 'A' || nome[j] == 'E' || nome[j] == 'I' || nome[j] == 'O' || nome[j] == 'U')
		{
			vocale_nome = nome[j];
			nome.erase(j, 1);
			len_nome--;
			j--;
		}
	}
	anno.erase(0, 2);
	int app = stoi(giorno);
	if (femmina == true)
	{
		app = app + 40;
		data = app;
	}
	else {
		data = giorno;
	}



	result = cognome + vocale_cognome+nome+anno+a_mesi[mese]+data;
	cout << result;
	return 0;
}


string file_content()
{
	// filestream variables 
	fstream file;
	string filename;

	// we declare filename which corresponds to the file we want to open
	filename = "lista-codici.txt";

	//open the file
	file.open(filename.c_str());

	// create a stringstream
	stringstream buffer;

	//passes the file buffer to the stringstream
	buffer << file.rdbuf();

	//reading the file
	return buffer.str();
}

8 Risposte

  • Re: Calcolatore codice fiscale

    Cosa ottieni da quella funzione che legge il file?
  • Re: Calcolatore codice fiscale

    oregon ha scritto:


    Cosa ottieni da quella funzione che legge il file?
    La funzione legge il file che viene trasferito dentro la variabile database, cioè tutto il contenuto nel file va a finire nella stringa database.
  • Re: Calcolatore codice fiscale

    Ok, adesso prova a fare una ricerca nella stringa database e ottieni la posizione della città richiesta. Poi estrai dalla stringa la parte del codice.
  • Re: Calcolatore codice fiscale

    oregon ha scritto:


    Ok, adesso prova a fare una ricerca nella stringa database e ottieni la posizione della città richiesta. Poi estrai dalla stringa la parte del codice.
    Qui è il problema non so come farla,avevo pensato di usare database.find(citta) potrebbe funzionare? (La variabile citta contiene il nome della città che utente mette)
  • Re: Calcolatore codice fiscale

    Ci hai provato?
  • Re: Calcolatore codice fiscale

    oregon ha scritto:


    Ci hai provato?
    Si ho provato a vedere se il programma riesce a individuare la città ed ci riesce
        if (database.find(citta) != string::npos) 
        {
            cout << "la città è nel database!" << '\n';
        }else{
            cout << "non è presente nel database! ";
            return 0;
        }
    
    ora non ho le idee chiare come procedere avanti, ho guardato anche un pò online e suggeriscono usare tutti getline ma se provo mi restituisce errore.
  • Re: Calcolatore codice fiscale

    Scusami perchè non leggi una struttura
    formata da nome citta e codice invece di tutta la stringa?
    poi con un doppio ciclo ti controlli il nome della città e quando la trovi ti prendi il codice!
    il primo ciclo ti serve per leggere il file
    mentre il secondo ti serve per scandagliare il nome della città.
  • Re: Calcolatore codice fiscale

    La find restituisce la posizione. Usala

    Leggi la documentazione della find
Devi accedere o registrarti per scrivere nel forum
8 risposte