Programación de calendario perpetuo en lenguaje C
# incluir & ltwinnt.h & gt
# incluir & ltiostream & gt
# incluir & ltiomanip & gt
Usar espacio de nombres std
intweek(int, int, int); // Determina el día de la semana según el año, mes y día.
int bisiesto _ año(int); //Determina el año bisiesto
void display _ año(int); //Muestra el calendario de un año.
void demand_day(int, int, int); //Consulta un día determinado
int main()
{
int y , m, d, es = 1;
while(es)
{
Manejar el mango de la consola;
consola hwnd = GetStdHandle(STD _ OUTPUT _ HANDLE);
SetConsoleTextAttribute(console hwnd, 12);
cout & lt& lt"Seleccione una operación:\n1→Mostrar calendario\
p>
\n2→Consultar un día determinado\n0→Salir" < & ltendl
char TP[20]; CIN & gt; & gtTP;
if(tp[ 1]! = ' \ 0 ' | | TP[0]>2 ' | | TP[0]<0 '){ cout <<"Error de entrada"
Switch (tp[0]-48)
{
Caso 1:{ cout<<"Ingrese el año:";CIN>>y;System(" cls"); display_year(y);break;}
Caso 2:{ cout & lt& ltIngrese el año, mes y día separados por espacios. cin>>y>>m>>d;system("cls");
requirement_day(y,m,d);break;}
Caso 0:{ es = 0; p>
}
}
return 0;
}
// - Determina el día de la semana según el año, mes y día.
int semana(int y, int m, int d)
{
int semana1, AA = y;
if( m = = 1){ m = 13; YY-;}
si(m = = 2){ m = 14;
semana 1 =(d+ 2; * m+3 *(m+1)/5+YY/4-YY/10YY/400)% 7;
int s
Cambiar (semana1)
{
Caso 0: s = 1; roto;
Caso 1: s = 2; = 3;
Caso 3: s = 4;
Caso 4: s = 5; ; romper;
Caso 6: s = 0; romper;
}
Devolver s;
}
// - Determinar los años bisiestos.
int año bisiesto (int y)
{
int I;
if((y % 4 = = 0 & amp ; & ampy%100! = 0)| y % 400 = = 0)I = 1;
si no I = 0;
Devolver I;
}
// - Muestra el calendario de un año determinado.
Display_year vacío (entero y)
{
int n1, n2, I, j, a[13], c, d;
p>
Identificador de la consola;
consola hwnd = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(consola hwnd, 5);
cout & lt& ltsetw(38)lt;& lty & lt& lt"Año"
cout & lt& ltsetw(28)& lt;& lt"************";
for(I = 1;i<=27;i++)cout & lt;& lt'*';
cout & lt& ltendl
a[ 1 ]= a[3]= a[5]= a[7]= a[8]= a[10]= a[12]= 31 //
a[4]= a [ 6]= a[9]= a[11]= 30; // Determinar el número de días de cada mes
if(leap _ year(y))a[2]= 29; p>
else a[2]= 28; //
for(I = 1;I<=11;I+=2) //Seis ciclos
{< / p>
SetConsoleTextAttribute(consola hwnd, 1);
cout & lt& ltsetw(14)& lt;& lti& lt& lt"mes"
SetConsoleTextAttribute(consola hwnd, 2 );
cout & lt& ltsetw(4)& lt;& lt"天"< & ltsetw(4)& lt;& lt"一"
& lt& lt"四"
cout & lt& ltsetw(16)& lt;& lt' ';
cout & lt& ltsetw(4)& lt;& lt"天"< & ltsetw(4 )& lt;& lt"uno"
& lt& lt"cuatro"
SetConsoleTextAttribute(console hwnd, 7);
n 1 = Semana(y , I, 1); n2 = Semana(y, i+1, 1);
if(n1) // -
{
for( j = 1;j & lt= n 1;j++) //
cout & lt& ltsetw(4)& lt;& lt' ';
} p>
for(j = 1;j & lt= 7-n 1;j++)
cout & lt& ltsetw(4)& lt;& ltj;
cout & lt& ltsetw (16)& lt;& lt' ';
IF(n2)
{//-Emite la primera línea de cada ciclo-
for( j = 1;j & lt= n2j++)
cout & lt& ltsetw(4)& lt;& lt' ';
}
for(j = 1; j & lt= 7-N2; j++)
cout & lt& ltsetw(4)& lt;& ltj;
cout & lt& ltendl// -
c = 8-n 1; d = 8-N2;
for(int m = 1; m & lt6;M++) //El calendario mensual puede tener hasta seis líneas.
{
if(c & gt; a[I])cout & lt; & ltsetw(4 * 7)& lt & lt' ';//si c & gtA[i], entonces esta línea del mes genera todos los espacios.
for(j = c;j & lt= a[I];j++)
{
cout & lt& ltsetw(4)& lt;& ltj;
if((j-c+1)% 7 = = 0){ c = j+1; romper;}
if(j = = a[I] ){ cout <<setw((6 semanas(y,I,a[I])* 4)<<' ';c = j+1;break;}
//Si J es el último día del mes, se completarán los espacios restantes en esta línea.
}
cout & lt& ltsetw(16)& lt & lt' ';
if(d & gt;a[I+1])cout & lt;& ltsetw(4 * 7)& lt;& lt' ';
for(j = d;j & lt= a[I+1];j++)
{ //
cout & lt& ltsetw(4)& lt;& ltj;
if((j-d+1)% 7 = = 0){ d = j+1; descanso;}
if(j = = a[I+1]){ cout & lt ;& ltsetw((6 semanas(y,i+6,a[I+1])* 4)& lt;& lt'';d = j+1;descanso;}
}
cout & lt& ltendl
}
cout & lt& ltendl
}
cout & lt& ltendl
}
// - Consultar un día determinado
Día de demanda no válido (entero y, entero m, entero d)
{
int n;
identificador de consola de consola;
consola hwnd = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute( consola hwnd, 5);
n = semana (y, m, d);
cambio (n)
{
Caso 1: cout & lt ;& lty & lt& lt"año"
Caso 2:cout & lt;& lty & lt& lt"año"
Caso 3: cout & lt& lty & lt& lt"año "
Caso 4: cout & lt;& lty & lt& lt"año"
Caso 5:cout & lt;& lty & lt& lt"año "
Caso 6: cout & lt;& lty & lt& lt"año"
Caso 0:cout & lt;& lty & lt& lt"año"
Predeterminado: descanso
}
cout & lt& ltendl
}