Buscando el código fuente VC6.0 del calendario perpetuo. Por favor dame orientación
int día,año,mes;
int isLeap()
{int isleap;
if(((año%4==0)&&!(año%100==0))||(año%400==0)))isleap=1;
else isleap=0;
return isleap;}
int lastdayofmonth()
{int lastday, isleap;
cambiar (mes)
{ caso 1: caso 3: caso 5: caso 7: caso 8: caso 10: caso 12: lastday=31;break;
caso 4: caso 6: caso 9: caso 11. lastday=30;break;
caso 2: {isleap=isLeap();
if (isleap==1) lastday=29;
else último día =28;}}
return último día;}
int ValidDate()
{int valid;
int añoOK,mesOK, díaOK;
if ((año>1811)&&(año<=2012)) añoOK=1;
en caso contrario añoOK=0;
si (( mes>0)&&(mes<=12)) mesOK=1;
else mesOK=0;
if ((día>0)&&(día<= últimodíadelmes() ) díaOK=1;
else díaOK=0;
if(añoOK && mesOK && díaOK) valid=1;
else valid=0; p>
Devolución válida;}
int getday(){printf("Ingrese un mes/un día/un año");scanf("%d %d %d",&mes,&día ,&year);
return ValidDate();}
void incrementdate()
{if (día else {día=1; if (mes==12) {mes=1; año+=1;} else mes+=1;}} void print() if (ValidDate())printf("el día siguiente es %d/%d/%d ",mes,día,año); elseprintf("Error de fecha");} void main(){getday();incrementdate();print();} Además de esto, descubrimos otro problema. Después de escribir, aunque tiene una verificación de entrada, tal como está escrita ahora, la verificación no tiene ningún efecto. Puede reescribir getday (); if (getday () == 0) {printf ("Error de fecha"} en el programa principal. Esto significa que si la fecha ingresada es anormal, aparecerá un mensaje de error y el el programa finalizará. Las funciones principales incluyen 1 Consultar el día de la semana correspondiente a cada día de un determinado mes en un determinado año int. día del mes[12]={31,28,31,30 ,31,30,31,31,30,31,30,31} int main() { struct date d; getdate( &d); printf("Hoy es: %d año %d mes %d día/n",d.da_year,d.da_mon, d.da_day); rili (d.da_year,d.da_mon-1); sistema("pausa"); return 0; void rili(int año, int mes) { int d,w,i,s,c,p char x mientras(mes>11) { p> mes-=12; año++ } if(runniansub(año)) mesdía[1 ]=29; printf( "%d año %d mes\n",año,mes+1); printf("S M T W T F S\n"); s=semana(año,mes+1,1); for(i=0; i<3*s; i++ ) printf(" "); for(d=1 ;d<=mesdía[mes];d++) { if(c>6) { printf("\ n"); c= 0; } c++; printf("%d",d); printf ("%s",(d<. 10)?" ":" "); } c++; printf("%s",(d<. 10)? " :" "); } printf("\n"); printf("Próximo mes N, último mes P, salida Q"); >x=getch(); printf("%c\n",x if(x=='N' || x=='n') { rili( año,mes+1); } p> else else if(x=='P' || x=='p') { rili( año,mes -1); } else if(x=='P' || x=='p') { rili( año,mes-1 } else { printf("¡Gracias por usar! 88\n"); return;}}} int runniansub(int año) { return ((año%4==0 && año). %100!=0) ||| (año%4 ==0 && año%400==0)); int m, int d) { if( (m==1)||(m==2)) { m+=12; y--; } return ((d+2*m+3*(m+1)/5+y+y/4-y/10y/400)+1)%7 #include int IsLeapYear(int /*Definir subfunción*/ main()
long int Año_días=0;
int Año_Inicio=1;
int Por_Año_Días;
int mes_día[]={31,28,31,30,31,30,31,31,31,30,31,30,31,30,31,31 , 31,29};/*define
meses*/
printf("¡Sabemos que 2000.01.01 es sábado!/n");
printf ("Ingrese el año y el mes:"); /*Mensaje rápido*/
while(1)
{scanf("%d %d",&.year, &temp);
if(getchar()=='q')
salir(0);
mientras(Year_Start < año)
{ if(IsLeapYear(Year_Start))/* Llame a la función IsLeapYear para determinar si es un año bisiesto*/
Per_Year_Days=366 /* Un año bisiesto tiene 366 días en un año*; /
else
Per_Year_Days=365; /* El año promedio es 365 días*/
Year_days= Year_days + Per_Year_Days;
Year_Start++;
}/* Genera el calendario de cada mes*/
// for(temp=1;temp<=12;temp++)
{ switch( temp)
{ caso 1: printf("Enero (%d) \n",año);descanso;
caso 2: printf("Febrero (%d) \n ",año); descanso;
caso 3: printf("Marzo (%d) \n",año) año); descanso;
caso 7: printf( "Julio (%d) \n",año); descanso;
caso 8: printf("Agosto (%d) \n",año); descanso;
caso 9: printf(" Septiembre (%d)\n",año);descanso;
caso 10: printf("Octubre (%d)\n",año);descanso;
caso 11: printf("Noviembre (%d)\n",año);descanso;<
caso 12: printf("Diciembre (%d) \n",año;descanso); /p>
predeterminado:printf("error\n");
<p> }
i=Year_days%7;
printf("Lun Mar Mié Jue Vie Sáb Dom\n"); p> if(i!=0)
for(temp_i=0;temp_i
printf(" ");
día= 1;
if( IsLeapYear(año)&&temp==2)
while(día<=mes_día[12])
{if(día>1 )
if(año_días%7==0)
printf("/ n");
if(día>=10)
printf("%d ",día);
else
printf("%d ",día);
Año_días++;
día++;}
else
while(día<=mes_día[temp-1])
{ if(día>1) p>
if(Días_año%7==0)
printf("\n");
if(día>=10)
printf("%d ",día);
else
printf("%d ",día);
Año_días++;
day++; }/* Introduce las fechas en secuencia*
printf("\n");
int IsLeapYear(int año) /* Determina si es un año bisiesto*/
{ if ((año%4==0)&&(año%100!=0)||(año%400==0))
Volver 1;
else
return 0;}}
#include
int salto (int año)
{if(year%4==0&&year%100!=0||(year%400==0) //determinar si es año bisiesto
return 1;
else return 0; }
#clude int days_month (int mes,int año) //Determina si es un año bisiesto p> { if( mes==1||mes==3||mes==5||mes==7||) mes==8||mes==10||mes==12) { if(month==4||month==6||month==9||month==11) //encuentra el mes grande return 31; /p> { if (month==4||month==6||month==9||month==11) //encontrar el mes pequeño return 30 p> { if( mes==2&mes==3||mes==5||mes==7||mes==11) //encuentra el sm todo el mes devuelve 30 if(month==2&&leap(year)==1) devuelve 29 //determina si febrero es de 29 días o 29 días else return 28; } int primero=1, año bisiesto=1. int primer día(int mes,int año) {int w w=(1+2*mes+3*(mes+1) /5+año+año/4+año/400-año/100)%7+1; //determina qué día de la semana es el primer día del mes return w; p> main() {int i,j =1,k=1,a,b,mes,año printf("\n ingresa mes y; año:\n"); scanf("%d%d",&mes,&año); //ingresa mes y año b=días_mes (mes,año); a=firstday (mes,año); printf(" Dom Lun Mar Wed Thu Vie Sat \n"); if(a==7) {for(i=1;i< ;=b;i++) {printf("%4d",i); / p> if(i%7==0) {printf("\n"); {mientras (j<=4*a) {printf(" ") j++; ( i=1;i<=b;i++) {printf("%4d",i if(i==7*k-a) {printf("\n"); k++ }}}} printf("\n");