#include <iostream.h>
#include <stdlib.h>

class Date 
{   //dati membro (giorno, mese, anno) 
	short int gg;
	short int mm;
	int aa;
public:
	//costruttori e distruttori
	Date() {gg=1;mm=1;aa=1999;};
	Date(short int, short int, int);
	~Date() {gg=mm=aa=0;};
    //metodi
	short int GetG() {return gg;}
	short int GetM() {return mm;}
	int GetA() {return aa;}
	void SetG(short int g) {gg=g;}
	void SetM(short int m) {mm=m;}
	void SetA(int a) {aa=a;}
	void Display();
	void Input();
	long int Convert();
};

Date::Date(short int d,short int o, int y)
{
	gg=d;
	mm=o;
	aa=y;
}

void Date::Display()
{
	cout<<gg<<"/"<<mm<<"/"<<aa<<endl;
}
void Date::Input()
{
	cout<<"Inserire la Data (gg , mm ,aaaa):"<<endl;
	cin>>gg>>mm>>aa;
    if ((gg<=1)&&(gg>=31)&&(mm>=1)&&(mm>=12)&&(aa==0)) {
		cout<<"Data inesistente!"<<endl;
		exit (1);
	}
}
long int Date::Convert()
{
	long int giorni;
	int d;
	if ((gg>=1)&&(gg<=31)&&(mm>=1)&&(mm<=12)&&(aa!=0)) {
		switch (mm) {
		case 1 : d=0;
			break;
        case 2 : d=31;
			break;
		case 3 : d=59;
			break;
		case 4 : d=90;
			break;
		case 5 : d=120;
			break;
		case 6 : d=151;
			break;
		case 7 : d=181;
			break;
		case 8 : d=212;
			break;
		case 9 : d=243;
			break;
		case 10 : d=273;
			break;
		case 11 : d=304;
			break;
		default : d=334;
			break;
		}
		giorni=(aa*365)+d+gg;
	}
	else {
		cout<<"Data inesistente!"<<endl;
		exit (1);
	}
	return giorni;
}


void main () {
     cout<<"Inizio programma..."<<endl;
	 Date a;
	 cout<<"Data di default:";
	 a.Display();
	 cout<<"Giorni: "<<a.Convert()<<endl;
	 cout<<"Aggiornamento al 2/7/2003..."<<endl;
	 a.SetG(2);
	 a.SetM(7);
	 a.SetA(2003);
	 cout<<"Data aggiornata:";
	 a.Display();
     cout<<"Giorni: "<<a.Convert()<<endl;
	 cout<<"Inserimento Data manuale..."<<endl;
	 a.Input();
     cout<<"Data aggiornata:";
	 a.Display();
     cout<<"Giorni: "<<a.Convert()<<endl;
	 a.~Date();
	 cout<<"Fine programma."<<endl;
};