Diseño de programa de visualización de calendario en lenguaje C
#include lt;stdio.hgt;
#include lt;stdlib.hgt;
#include lt;math.hgt;
char* mes[]={"Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", " Nev", "Dic"};
char* semana[]={"Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"} ;
int j_leapyear(int año) //Definir función para detectar si el año de entrada es bisiesto
{
if((/*year400= =0*/ año4==0amp;amp;año100!=0)||(año400==0))
return (1);
// else if(año4 ==0amp; año100!=0)
// return (1);
else return
}
int mes_día( int año, int mes) //Detecta cuántos días hay en el año y el mes
{
int mon_day[]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(j_leapyear(year)&month==2)
return 29;
else return (mon_day[mes-1]);
}
int j_week(int año, int mes, int día) //Detecta qué día de la semana en que es el día
{
int d=0, i; //d representa el número acumulado de días del año
int
/* int mes_día[]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (j_leapyear( año)==1)
día_mes[1]=29
for(i=0;ilt;mes;i)
d =día_mes[ i];
d=d día;*/
for(i=1;ilt;mes;i)
d =mes_día(año,i );
d =día;
w=(año-1) (int)(año-1)/4-(int)(año-1)/100 (int )(año-1)/400 d ;//Fórmula en línea
return ((int)w7);
}
int allye
ar(int año) // Genera el calendario del año completo
{
int i, j, b
printf("\nd calendar", año) ;
for(i=1;ilt;=12;i)
{
printf("\n\n\ts\n" , mes [i-1]);
// printf(" 7 1 2 3 4 5 6 \n"
printf(" S M T W T F S \n"); /p >
b=j_semana(año,i,1);
for(j=1;jlt;=mes_día(año,i) b;j)
{
if(jlt;=b)
printf(" ");
else if(j-blt; 10)
printf ("2d ",j-b);
else printf("2d ",j-b);
//else printf("2d ",j-b);
if(j7==0)
putchar('\n');
}
putchar('\n'); p>
}
return 0;
}
void Month_print(int año, int mes) //Ingrese un año y un mes, genere el calendario de este mes
{
int i, c, d
c=month_day(año, mes
printf); ("\n \n d año d mes calendario\n", año, mes);
printf(" S M T W T F S \n");
d=j_week(año, mes, 1);
for(i=1;ilt;=c d;i)
{
if(ilt;=d)
printf( " ");
else printf("2d ",i-d);
if(i7==0)
putchar('\ n');
}
putchar('\n');
}
int jisuan_day(int año, int mes , int day, int x, int y, int z) //Ingrese el año, mes y día, genere el número de días del mes y y el día z del año x, el día de la semana y si es un feriado del calendario gregoriano
{
int i, a, b, c=0, d=0, días=0, m=0, n=0, t ; p>
a=añogt;=x?año:x;
p>
b=añolt;x?año:x;
if(agt;b )
p>
{
for(i=b 1;ilt;a;i)
c =j_leapyear(i);
} p>
else c=0;
if(año!=x)
d=a-b-1;
else d=0;
m=365*d c;
if(añolt;x)
{
for(i=mes;ilt;=12 ;i )
n =día_mes(año,i);
días=m n día-z;
}
más si (añogt; x)
{
for(i=y;ilt;=12;i)
n =mes_día(x,i);
for(i=1;ilt;mes;i)
n =mes_día(año,i);
días=m n día-z; p>
p>
}
else
{
for(i=mesgt;=y?y:mes;ilt;( mesgt;=y? mes: y); i )
n =month_day(x, i);
días=abs(day-z) n; del mes y al día z Días
}
printf("Este día faltan d días para d, mes, d, año d\n", x, y, z, días
t=j_week(año, mes, día)
if(t==0) //Salida del día de la semana
printf("Este día es domingo");
else if(t==1)
printf("Este día es lunes");
else if(t==2)
printf("Este día es martes");
else if(t==3)
printf("Esto el día es miércoles");
else if (t==4)
printf("Esto es jueves");
else if(t== 5)
printf("Esto es viernes ");
else if(t==6)
printf("Esto es sábado");
putchar('\n');
if(month==1amp;amp;day==1)
printf("Este día es Año Nuevo Día");
else if(mes= =2amp;amp;día==14)
printf("Este día es el día de San Valentín");
else if(mes==3amp;amp;día==8)
printf("Este día es el Día de la Mujer"
else if(mes==3amp;día); ==12)
printf(
"Este día es el Día del Árbol");
else if(month==4amp;amp;day==1)
printf("Este día es el Día de los Inocentes");
else if(mes==4amp;amp;día==4)
printf("Este día es el Festival de Qingming");
else if( mes ==5amp;amp;día==1)
printf("Este día es el Día del Trabajo");
else if(mes==6amp;amp;día== 1 )
printf("Este día es el Día del Niño");
else if(mes==8amp;día==1)
printf( " Este día es el Día del Ejército");
else if(month==9amp;amp;day==10)
printf("Este día es el Día del Maestro");
else if(mes==10amp;amp;día==1)
printf("Este día es el Día Nacional");
else if( mes ==12amp;amp;day==25)
printf("Este día es Navidad");
else printf("Este día no es un día festivo especial");
putchar('\n');
días de retorno;
}
void fish_or_net(int año, int mes, int día ) //Determinar si pescar o secar la red
{
int q;
int i, a, b, c=0, d=0 , días=0, m=0, n=0;
a=añogt;=1990?año:1990;
b=añolt;1990?año:1990; p >
if(agt; b)
{
for(i=b 1; ilt; a; i)
c =j_año bisiesto( i );
}
else c=0;
if(año!=1990)
d=a-b-1;
else d=0;
m=365*d c
if(año; 1990)
{
for(i=mes;ilt;=12;i)
n =mes_día(año,i);
días=m n 1 día;
}
else if(añogt; 1990)
{
for(i=1;ilt;=12;i)
n =mes_día(1990,i);
for(i=1;ilt;mes;i)
n =mes_día(año,i);
días=m n día-1
}
else
{
for(i=mesgt;=1 1:mes;ilt;(mesgt;
=1?month:1); i )
n =month_day(1990, i);
days=abs(day-1) n; este día ¿Cuántos días tiene el 1 de enero de 1990?
}
q=días5 1;
if(q==1||q== 2|| q==3) //Determinar si pescar o secar la red
printf("El pescador está pescando hoy");
else printf("El pescador está secando la red hoy");
putchar('\n');
}
/*int main() //Esta parte del contenido se utiliza para comprobar
{
int j_leapyear(int año
int mes_día(int año, int mes
); int j_week(int año, int mes, int día);
int allyear(int año
void mes_print(int año, int mes); > int jisuan_day(int año, int mes, int día, int x, int y, int z
void fish_or_net (int año, int mes, int día
); int x, y, z, año, mes, día
// allyear(2015
//month_print(2016, 12); printf("Ingrese la fecha de hoy (ingrese por año, mes y día, como 2016, 1, 14 significa 14 de enero de 2016): ");
scanf("d, d, d", amp; x, amp; y , amp; z);
printf("\nIngrese una fecha en el mismo formato que el anterior: "); d, d", amp; año, amp; mes, amp; día);
jisuan_day(año, mes, día, x, y, z);
// fish_or_net (x, y, z);
return 0;
} // Esta parte se utiliza para detectar si la función anterior tiene errores
*/
int main ()
{
int j_leapyear(int año);
int mes_día(int año, int mes); /p>
int j_week (int año, int mes, int día);
int allyear(int año);
mes_print(int año, int mes);
int jisuan_day(int año, int mes, int día, int x, int y, int z
void fish_or_net(int año); , int mes, int día); //Declaración de función
int opción, año, mes, día, x, y, z
char ny
system("color 1f");
while (1)
{
printf("\n\n\t Bienvenido a... .Programa escrito\n\n");
printf(" Seleccione el servicio que necesita, ingrese el número y presione Enter para finalizar\n");
printf(" 1. Ingrese un año y genere el calendario de ese año\n");
printf(" 2. Ingrese el año y el mes y genere el calendario de este mes.\n");
printf( " 3. Ingrese el año, mes y día, y muestre cuánto dura hoy, el día de la semana y si es un feriado del calendario gregoriano.\n"); printf(" 4. Alguien comenzó el 1 de enero de 1990 Para pescar, "tres días para pescar, dos días para secar las redes", ingrese una fecha posterior a 1990 y indique si pescó o secó las redes ese día.
\n");
printf(" 5.Salir\n");
scanf("d", amp; opción);
switch( opción) //cambiar estructura de rama
{
caso 1:
while(1) //ciclo while, el siguiente 1 es una constante, lo que significa hasta que la pausa finalice el ciclo
{
printf("Ingrese un año: "
scanf("d", amp; año <); /p> p>
allyear(año);
printf("¿Quieres continuar consultando el calendario? (y significa continuar, n significa finalizar)"); > scanf("c ", amp; ny);
if (ny=='n')
break
}
break;
caso 2:
while (1)
{
printf("Ingrese año y mes: ") ;
scanf("d, d", amp; año, amp; mes);
mes_print (año, mes
printf ("Hacer); ¿Quieres continuar consultando el calendario? (y significa continuar, n significa finalizar): ");
scanf("c", amp; ny);
if(ny= ='n')
descanso
}
descanso
caso 3:
mientras ( 1)
{
printf("Ingrese año, mes y día: ");
scanf("d, d, d", amp; año , amp; mes, amp; día);
printf("Ingrese la fecha de hoy: "); ; y, amp; z);
jisuan_day(año, mes, día, x, y, z);
printf("¿Quieres continuar consultando? (y significa continuar, n significa finalizar): ");
scanf("c", amp; ny);
if(ny=='n')
romper;
}
romper;
caso 4:
mientras (1)
{
printf("Ingrese una fecha posterior al 1 de enero de 1990: ");
scanf("d, d, d", amp; año, amp; mes,amp ;día);
fish_or_net(año, mes, día);
printf("¿Quiere continuar preguntando si el pescador está pescando o secando la red? (y significa continuar, n significa end): ");
scanf("c",amp;ny);
if(ny=='n')
break;
}
descanso
caso 5:
mientras (1)
{
printf ("¿Estás seguro? y significa sí, n significa no");
scanf("c", amp; ny
if(ny=='); y')
exit(1); //Indica salir del programa
else if(ny=='n')
break;
}
break;
default: printf ("Lo sentimos, este servicio no está disponible en este momento"); p>
} p>
}
devuelve 0;
}