edutecnica

Esercizio 10      

  

Scrivere un algoritmo che acquisisca in ingresso tre interi che rappresentano ordinatamente il giorno, il mese e l anno e determinare se essi corrispondono effettivamente ad una data.


Ci sono tre variabili di ingresso (intere) gg per i giorni, mm per i mesi ed aa per gli anni.

#include <iostream>
using namespace std;
int main(){
  int gg, mm, aa;
  bool valida;
  cout<<"giorno:";cin>>gg;
  cout<<"mese:";cin>>mm;
  cout<<"anno:";cin>>aa;
  valida = true;
  //controllo sul giorno da 1 a 31
  if(gg<1 || gg>31 )valida = false;
  //controllo sul mese da 1 a 12
  if(mm<1 || mm>12)valida = false;
  //controllo sul giorno del mese di febbraio bisestile
  if(aa%4==0 && mm==2 && gg>28)valida = false;
  //controllo sui giorni dei mesi da 30 giorni
  if((mm==4 || mm==6 || mm==9 || mm==11) && gg>30)valida=false;
  //validazione
  if(valida)cout<<"DATA VALIDA";
  else cout<<"DATA NON VALIDA";
return 0;
}

E' importante inserire l'anno con 4 cifre, poi ricordiamo che un anno bisestile quando un multiplo di 4.
Si notano tutta una serie di controlli successivi caratterizzati da istruzioni if prive del ramo else.
Si ricorda infatti che la clausola else opzionale e qundo omessa il programma prosegue nella riga successiva.
L'istruzione if(valida) equivalente all'istruzione
if(valida==true) o anche all'istruzione
if(valida==1) dato che una per una variabile booleana false corrisponde a 0 e true corrisponde a qualsiasi valore ≠0.