calendario
Salve,
vi invio un semplice calendario da utilizzare a riga di comando
in c, se vi interessa usatelo come vi pare.
saluti
~Luca Rozza.
#include<stdio.h>
#define INIZIO 1900
long int giorni=0;
int bisestilef(int anno);
long int giornif(int mese,int anno);
void stampa(long int giorni,int mese,int anno);
main(){
int mese=0;
int anno=0,cont,m;
do{
printf("Inserire la data nel formato mm/aaaa : ");
scanf("%d/%d",&mese,&anno);
m=(anno>=INIZIO) && (mese<=12) && (mese>=1);
if(!m)printf("Mese o anno non validi o in formato non valido\n\n");
}while(!m);
for(cont=INIZIO;cont<anno-1;cont++)
{
for(m=1;m<=12;m++)
giorni=giorni+giornif(m,cont);
}
for(m=1;m<mese;m++)
giorni=giorni+giornif(m,cont);
stampa(giorni,mese,anno);
}
int bisestilef( int anno){ /*Ritorna 1 se bisestile,0 altrimenti*/
return (anno%4)?0:(anno%100)?1:!(anno%400);
}
long int giornif(int mese,int anno){ /*Calcola i giorni di ogni mese*/
switch (mese){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:return 31;
case 4:
case 6:
case 9:
case 11:return 30;
case 2:if (bisestilef(anno)) return 29; return 28;
}
}
void stampa(long int giorni,int mese,int anno){
long int temp=0,ilgiorno=0,i=0;
temp=giorni/7;
temp=temp*7;
ilgiorno=giorni-temp;
i=ilgiorno;
printf("\n ");
switch(mese){
case 1:printf("Gennaio");break;
case 2:printf("Febbraio");break;
case 3:printf("Marzo");break;
case 4:printf("Aprile");break;
case 5:printf("Maggio");break;
case 6:printf("Giugno");break;
case 7:printf("Luglio");break;
case 8:printf("Agosto");break;
case 9:printf("Settembre");break;
case 10:printf("Ottobre");break;
case 11:printf("Novembre");break;
case 12:printf("Dicembre");
}
if (bisestilef(anno) && (mese>2)) i++;
printf(" %d\n\n\n ",anno);
switch(i){
case 6: printf("L M M G V S D");break;
case 0: printf("M M G V S D L");break;
case 1: printf("M G V S D L M");break;
case 2: printf("G V S D L M M");break;
case 3: printf("V S D L M M G");break;
case 4: printf("S D L M M G V");break;
case 5: printf("D L M M G V S");
}
printf("\n\n");
ilgiorno=1;
do{
if ((ilgiorno==8)||(ilgiorno==15)||(ilgiorno==22)||(ilgiorno==29)) printf("\n");
printf("%4ld",ilgiorno);
ilgiorno++;
}while(ilgiorno<=giornif(mese,anno));
printf("\n");
}
Reply to: