[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: