Allora l'esercizio è questo:
Scrivere un programma che sia in grado di gestire l'agenda di uno studente. Ogni appuntamento
indica l'ora e una breve descrizione dello stesso. Possono esserci piu' appuntamenti nello stesso
giorno. L’utente immette gli appuntamenti tramite tastiera.
Gli impegni in agenda possono essere immessi in modo disordinato (ad esempio e’ possibile
immettere l’impegno per giovedi’ 20 e successivamente l’impegno per lunedi’ 4) ma l’agenda deve
stampare a video gli impegni in ordine di data e di ora.
#include <stdio.h>
#include <stdlib.h>
typedef char mese[20];
typedef struct {
int minuto;
int ora;
int giorno;
mese month;
int anno;
} data;
typedef struct {
int n_pagina;
char testo[30];
}PaginaAgenda;
mese mesi[12] = {"Gennaio", "Febbraio", "Marzo",
"Aprile", "Maggio","Giugno",
"Luglio","Agosto","Settembre",
"Ottobre","Novembre", "Dicembre"};
data input;
void funzione_tempo(){
int i, currM, currMonthDays;
printf("Inserire la data (formato dd/h:m/mm/yyyy): ");
scanf(" %2d/%2d:%2d/%2d/%4d",&input.giorno,&input.ora,&input.minuto,&currM, &input.anno);
// CASO 30 gg
if(currM == 4 || currM == 6 || currM == 9 || currM == 11)
currMonthDays = 30;
// CASO 31 gg
else if(currM != 2)
currMonthDays = 31;
// CASO FEBBRAIO ANNO BISESTILE
else if((input.anno % 4 == 0 && input.anno % 100 != 0) || input.anno % 400 == 0)
currMonthDays = 29;
// CASO FEBBRAIO NON BISESTILE
else
currMonthDays = 28;
strcpy(input.month, mesi[currM-1]);
printf("\n\nData immessa: \n\tGiorno: %d\n\tOra: %d\n\tMinuto: %d\n\tMese: %s\n\tAnno: %d\n\n",input.giorno,
input.ora,input.minuto,input.month,input.anno);
}
void funzione_agenda(){
int a;
PaginaAgenda Agenda[a]; // Agenda per 1 mese
char text[30];
//Lettura appuntamenti.
Agenda[a].n_pagina=(a);
printf("Inserisci l'appuntamento per il giorno %d: ", (a));
scanf("%s",text);
strcpy(Agenda[a].testo,text);
//Stampo agenda.
printf("\nVisualizzo l'agenda\n");
printf("\nPagina %d \n", Agenda[a].n_pagina);
printf("Appuntamento: %s \n data: Giorno:%d\t Ora:%d\t Minuto:%d\t Mese:%s\t Anno:%d\t\n", Agenda[a].testo,input.giorno,
input.ora,input.minuto,input.month,input.anno);
}
//algoritmo di ordinamento.
int main(){
int agendadipagine=3;
int k;
for(k=0;k<agendadipagine;k++){
funzione_tempo();
funzione_agenda();
}
return 0;
}