Ragazzi devo realizzare un calendario perpetuo
ho realizzato tutto gli script,mi sono trovato in che giorno inizia la settimana.
ho questo schema
D L M M G V S
i dati in input sono aanno = l'anno da controllare (bisestile?)
amese = mese da visualizzare (30,31,29 giorni?)
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int riga;
int start; //scarto
int x;
int w;
int t;
int i;
int ws;
int settimana;
int mese;
int giorni;
int amese;
int aanno;
main(){
printf("#######################################\n" );
printf(" Calendario\n");
printf("#######################################\n" );
printf("Inserisci il mese del quale vuoi visualizzare il calendario: es(12)\n");
scanf("%d",&amese);
printf("\nInserisci l'anno del quale vuoi visualizzare il calendario:es(2001)\n");
scanf("%d",&aanno);
printf("\n");
printf("D\t");
printf("L\t");
printf("M\t");
printf("M\t");
printf("G\t");
printf("V\t");
printf("S\t");
printf("\n");
//bisestile?
if(aanno % 4 == 0 && aanno % 100 != 0 || aanno % 400 == 0){ x=1;} else {x=0;}
switch(amese){
case 1:
w=30;
break;
case 2:
if(x==1){
w=29;
}
else {w=28;}
break;
case 3:
w=31;
break;
case 4:
w=30;
break;
case 5:
w=31;
break;
case 6:
w=30;
break;
case 7:
w=31;
break;
case 8:
w=31;
break;
case 9:
w=30;
break;
case 10:
w=31;
break;
case 11:
w=30;
break;
case 12:
w=31;
break;
default:
printf("ERRORE");
}
ws = (aanno+ (aanno- 1 ) /4 - (aanno - 1) / 100 + (aanno - 1) /400) %7; //formula per il calcolo del primo giorno della sett
switch(ws){//calcolo gli spazi da saltare
case 1: start=0; break; //domenica
case 2: start=1; break; //lunedi
case 3: start=2; break; //martedi
case 4: start=3; break; //mercoledi
case 5: start=4; break; //giovedi
case 6: start=5; break; //venerdi
case 7: start=6; break; //sabato
}
for(i=-1;i<start;i++){printf(" \t"); t++;} //??
for(x=5-t;x<4;x++){printf("%d\t",x); }
for(giorni=7-t+1;giorni<=w+1;giorni++){
if(giorni == 7-t+1 ||giorni== 14-t+1 || giorni == 21-t+1 || giorni == 28-t+1) {printf("\n");}
printf("%d\t",giorni);}
getch();
}
oltre questo non riesco a proseguire,sono un neofita col C..
in pratica ho start che sono le \t che ho saltato
con un ciclo for inserisco le tabulazioni
ora dovrei ricompletare la riga
non riesco a trovare un algoritmo che mi permetta,sapendo il numero delle tabulazioni da scarta,di continuare la riga e poi andare a capo appena sn stati scritti 7 numeri
il risultato che ottengo è sempre questo
D L M M G V S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
etc
ovvero il valore della prima riga non cambia con i mesi,ma il valore restituito da ws(il giorno in cui inizia la settimana 1=domenica,2=lunedi)è giusto
sto impazzendo![]()