Data di nascita
typedef struct{ int GIORNO,MESE,ANNO;
} DATA;
/*controllo uguaglianza*/
BOOL UgualeData(DATA d1, DATA d2)
{
return (d1.GIORNO == d2.GIORNO) &&
(d1.MESE == d2.MESE) &&
(d1.ANNO == d2.ANNO);
}
/*controllo precedenza
ritorna vero sse d1 precede strettamente d2 */
BOOL Minore(DATA d1, DATA d2)
{
if(d1.ANNO != d2.ANNO) return (d1.ANNO < d2.ANNO);
else if(d1.MESE != d2.MESE) return (d1.MESE < d2.MESE);
else if(d1.GIORNO != d2.GIORNO) return (d1.GIORNO < d2.GIORNO);
}
/*lettura data
la parola letta dal file fin sarà ritornata dalla funzione
si assume che la data sia scritta con il formato gg/mm/aa */
int LeggiDueC(FILE * fin)
{
char c1,c2;
c1 = fgetc(fin);
c2 = fgetc(fin);
return ((c1-'0') * 10) + (c2-'0');
}
DATA LeggiData(FILE * fin)
{
DATA d;
d.GIORNO = LeggiDueC(fin);
fgetc(fin);
d.MESE = LeggiDueC(fin);
fgetc(fin);
d.ANNO = LeggiDueC(fin);
return d;
}
/*stampa data
la data p sarà scritta sul file fout
con il formato gg/mm/aa */
void ScriviDueC(FILE * fout,int n)
{
fputc((n / 10)+'0',fout);
fputc((n % 10)+'0',fout);
}
void ScriviData(FILE * fout, DATA d)
{
ScriviDueC(fout,d.GIORNO);
fputc('/',fout);
ScriviDueC(fout,d.MESE);
fputc('/',fout);
ScriviDueC(fout,d.ANNO);
}