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: