Esercizio no.10:soluzione

#include <iostream>
using namespace std;
bool bisestile(int anno) {
    return (anno % 400 == 0) || (anno % 4 == 0 && anno % 100 != 0);
}
int main() {
    int giorno, mese, anno;
    cout << “Inserisci giorno: “;
    cin >> giorno;
    cout << “Inserisci mese: “;
    cin >> mese;
    cout << “Inserisci anno: “;
    cin >> anno;
    bool valida = true;
    int giorni_massimi;
    if (anno <= 0) {
        valida = false;
    } else if (mese < 1 || mese > 12) {
        valida = false;
    } else {
        switch (mese) {
            case 1: case 3: case 5: case 7: case 8: case 10: case 12:
                giorni_massimi = 31; break;
            case 4: case 6: case 9: case 11:
                giorni_massimi = 30; break;
            case 2:
                if (bisestile(anno))
                    giorni_massimi = 29;
                else
                    giorni_massimi = 28;
                break;
        }
        if (giorno < 1 || giorno > giorni_massimi)
            valida = false;
    }
    if (valida)
        cout << “La data inserita e’ valida.” << endl;
    else
        cout << “La data inserita NON e’ valida.” << endl;
    return 0;
}