🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Codice Fiscale Inverso

Codegrind Team•Jul 10 2024

Descrizione del Progetto

In questo progetto, realizzerai un programma che estrae i dati personali da un codice fiscale italiano utilizzando C++. Il programma decodificherĂ  le informazioni relative al nome, cognome, data di nascita, sesso e luogo di nascita.

Requisiti

  1. Librerie C++: Utilizzare le librerie standard di C++.
  2. Interfaccia Utente: Creare una semplice interfaccia utente a riga di comando che permetta all’utente di inserire il codice fiscale.
  3. Decodifica del Codice Fiscale:
    • Estrarre le informazioni relative al cognome e al nome.
    • Estrarre e decodificare la data di nascita e il sesso.
    • Estrarre e decodificare il codice del luogo di nascita.

Passaggi

  1. Raccogliere il Codice Fiscale dell’Utente: Chiedere all’utente di inserire il codice fiscale.
  2. Decodificare il Codice Fiscale:
    • Estrarre e decodificare il cognome e il nome.
    • Estrarre e decodificare la data di nascita e il sesso.
    • Estrarre e decodificare il codice del luogo di nascita.
  3. Visualizzare i Dati Estratti.

Esempio di Codice

#include <iostream>
#include <string>
#include <unordered_map>
#include <stdexcept>

std::unordered_map<std::string, std::string> comuni = {
    {"H501", "ROMA"},
    {"F205", "MILANO"},
    {"F839", "NAPOLI"},
    // Aggiungi altri comuni qui
};

std::string estrai_nome(const std::string& codice) {
    std::string vocali = "AEIOU";
    std::string consonanti;
    for (char c : codice) {
        if (vocali.find(c) == std::string::npos) {
            consonanti += c;
        }
    }
    return consonanti;
}

std::string estrai_data_nascita(const std::string& codice, char sesso) {
    std::string mese_codice = "ABCDEHLMPRST";
    int anno = std::stoi(codice.substr(0, 2));
    if (anno < 40) {
        anno += 2000;
    } else {
        anno += 1900;
    }
    int mese = mese_codice.find(codice[2]) + 1;
    int giorno = std::stoi(codice.substr(3, 2));
    if (sesso == 'F') {
        giorno -= 40;
    }
    return std::to_string(giorno) + "/" + std::to_string(mese) + "/" + std::to_string(anno);
}

std::string estrai_comune(const std::string& codice) {
    return comuni.count(codice) ? comuni[codice] : "Comune sconosciuto";
}

void decodifica_codice_fiscale(const std::string& cf) {
    if (cf.length() != 16) {
        throw std::invalid_argument("Codice fiscale non valido.");
    }

    std::string cognome = estrai_nome(cf.substr(0, 3));
    std::string nome = estrai_nome(cf.substr(3, 3));
    char sesso = std::stoi(cf.substr(9, 2)) > 31 ? 'F' : 'M';
    std::string data_nascita = estrai_data_nascita(cf.substr(6, 5), sesso);
    std::string comune = estrai_comune(cf.substr(11, 4));

    std::cout << "Cognome: " << cognome << std::endl;
    std::cout << "Nome: " << nome << std::endl;
    std::cout << "Data di Nascita: " << data_nascita << std::endl;
    std::cout << "Sesso: " << sesso << std::endl;
    std::cout << "Comune di Nascita: " << comune << std::endl;
}

int main() {
    std::cout << "Decodifica Codice Fiscale" << std::endl;

    std::string cf;
    std::cout << "Inserisci il codice fiscale: ";
    std::cin >> cf;

    try {
        decodifica_codice_fiscale(cf);
    } catch (const std::invalid_argument& e) {
        std::cerr << e.what() << std::endl;
    }

    return 0;
}

Istruzioni per l’Esecuzione

  1. Salva il codice in un file: Ad esempio decodifica_codice_fiscale.cpp.
  2. Compila il programma:
    g++ -o decodifica_codice_fiscale decodifica_codice_fiscale.cpp
    
  3. Esegui il programma:
    ./decodifica_codice_fiscale
    
  4. Interazione con l’utente:
    • Inserisci il codice fiscale.
    • Il programma decodificherĂ  e visualizzerĂ  i dati personali relativi al cognome, nome, data di nascita, sesso e comune di nascita.

Estensioni Possibili

  1. Interfaccia Grafica: Utilizzare una libreria come Qt per creare un’interfaccia grafica per il decodificatore di codice fiscale.
  2. Validazione: Aggiungere funzionalità per validare il codice fiscale inserito dall’utente, come il controllo del carattere di controllo.
  3. Dizionari Completi: Utilizzare un dizionario completo dei codici catastali per i comuni italiani per una maggiore precisione.