Ho risolto così :
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
typedef struct{
char appuntamenti[150];
}Agenda;
typedef enum{Gennaio=1,Febbraio,Marzo,Aprile,Maggio,Giugno,Luglio,Agosto,Settembre,Ottobre,Novembre,Dicembre}Mesi;
int menu();
void anno_bisestile(int* anno,bool* bisestile);
void ins_mese(Mesi* m,int* g,int* h,bool* bisestile);
void inserire_appuntamento(Agenda appuntamenti[365][24],int* g,int* h);
void disdici_appuntamento(Agenda appuntamenti[365][24],int* g,int* h);
int main()
{
Agenda appuntamenti[365][24];
int anno;
bool bisestile;
Mesi m;
int g,h;
int scelta;
int n,i;
anno_bisestile(&anno,&bisestile);
while(scelta=menu()){
switch(scelta){
case 1:/*INSERIMENTO APPUNTAMENTO*/
printf("Quanti appuntamenti vuoi inserire ?");
scanf("%d",&n);
system("CLS");
for(i=0;i<n;i++){
printf("%d\n",anno);
ins_mese(&m,&g,&h,&bisestile);
inserire_appuntamento(appuntamenti,&g,&h);
printf("L'appuntamento : %s\nE' stato fissato il %d/%d/%d alle Ore: %d.00\n",appuntamenti[g][h].appuntamenti,g,m,anno,h);
}
system("PAUSE");
break;
case 2: /*DISDICI APPUNTAMENTO*/
ins_mese(&m,&g,&h,&bisestile);
printf("L'appuntamento : %s il %d/%d/%d alle Ore: %d.00\n",appuntamenti[g][h].appuntamenti,g,m,anno,h);
disdici_appuntamento(appuntamenti,&g,&h);
printf("%s\n",appuntamenti[g][h].appuntamenti);
break;
case 3: /*CERCA APPUNTAMENTO IN BASE A ORA*/
break;
case 0:
return 0;
}
}
}
int menu(){
int scelta;
printf("***GESTIONE AGENDA***\n");
printf("[1] INSERISCI APPUNTAMENTO\n");
printf("[2] DISDICI APPUNTAMENTO\n");
printf("[3] INSERISCI ORA PER VISUALIZZARE APPUNTAMENTI DEL MESE\n");
printf("[0] ESCI\n\n");
printf("SCELTA : \n");
scanf("%d",&scelta);
while(scelta<0 || scelta>4){
printf("SCELTA NON VALIDA!!!!");
printf("SCELTA : \n");
scanf("%d",&scelta);
return scelta;
}
return scelta;
}
void anno_bisestile(int* anno,bool* bisestile){
printf("inserisci anno :");
scanf("%d",anno);
if((*anno%4==0 && *anno%100!=0) || *anno%400==0){
//printf("L'anno inserito e' Bisestile !!\n");
*bisestile=true;
}else{
//printf("L'anno inserito non e' bisestile\n");
*bisestile=false;
}
}
void ins_mese(Mesi* m,int* g,int* h,bool* bisestile){
bool trovato=true;
do{
printf("INSERIRE MESE :\n");
scanf("%d",m);
}while(*m<1 || *m>12);
trovato=false;
if(*bisestile){
if(*m==Febbraio){
do{
printf("INSERIRE GIORNO (DA 1 A 29): FORMATO GG\n");
scanf("%d",g);
}while(*g<1 || *g>29);
trovato=true;
}else if(trovato==false){
if(*m==Aprile || *m==Giugno || *m==Settembre || *m==Novembre){
do{
printf("INSERIRE GIORNO (DA 1 A 30): FORMATO GG\n");
scanf("%d",g);
}while(*g<1 || *g>30);
trovato=true;
}
}
if(trovato==false){
do{
printf("INSERIRE GIORNO (DA 1 A 31): FORMATO GG\n");
scanf("%d",g);
}while(*g<1 || *g>31);
}
}else{
if(*m==Febbraio){
do{
printf("INSERIRE GIORNO (DA 1 A 28): FORMATO GG\n");
scanf("%d",g);
}while(*g<1 || *g>29);
trovato=true;
}else if(trovato==false){
if(*m==Aprile || *m==Giugno || *m==Settembre || *m==Novembre){
do{
printf("INSERIRE GIORNO (DA 1 A 30): FORMATO GG\n");
scanf("%d",g);
}while(*g<1 || *g>30);
trovato=true;
}
}
if(trovato==false){
do{
printf("INSERIRE GIORNO (DA 1 A 31): FORMATO GG\n");
scanf("%d",g);
}while(*g<1 || *g>31);
}
}
do{
printf("INSERIRE ORA (da 0 a 23)\n");
scanf("%d",h);
}while(*h<0 || *h>23);
}
void inserire_appuntamento(Agenda appuntamenti[365][24],int* g,int* h){
fflush(stdin);
printf("Inserire appuntamento in Agenda :\n");
gets(appuntamenti[*g][*h].appuntamenti);
}
void disdici_appuntamento(Agenda appuntamenti[365][24],int* g,int* h){
fflush(stdin);
strcpy(appuntamenti[*g][*h].appuntamenti,"E' stato Annullato");
}