Red de conocimiento informático - Descarga de software - Usando lenguaje C para implementar un calendario perpetuo

Usando lenguaje C para implementar un calendario perpetuo

#include

#include

#include

# incluir

año largo;

int fecha[12][6][7];

int day_tbl[ ][12]= {{31,28,31,30,31,30,31,31,30,31,30,31},

{31,29,31,30,31,30,31,31 ,30,31,30,31}};//El último día de cada mes

char *str[]={"Enero", "Febrero", "Marzo", "Abril" ," mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"};

void nian(año largo,ARCHIVO *fp)

{

int i,j,n=0,t;

char s[5][ 23];//Piense en los gráficos digitales como dos -matriz dimensional

void fyear(int t,int n,char s[5][23]);

for(i =0;i<5;i++){

for(j=0;j<23;j++){

si(((i==1)||(i ==3))&&((j>= 1&&j<=3)||(j>=7&&j<=9)||(j>=13&&j<=15)||(j>=19&&j<=21)) )

s[i ][j]=' ';

si no((j==5)||(j==11)||(j==17 ))

s[ i][j]=' ';

else

s[i][j]='*';

}//Juzga la posición de '*'

}

hacer{

t=año%10;

año=año/10;

faño(t,n,s);

n++;

}mientras(año!=0);

if(n<4) {

para(i=0;i<5;i++){

para(j=0;j<24-6* n;j++)

s[i][j]=' ';

}

}

for(i=0 ;i<5;i++){

printf(" ");

fprintf(fp,"%s"," ");

for( j=0;j<23;j++) {

printf("%c",s[i][j]);

fprintf(fp,"%c", s[i][j]);

}

printf("\n");

fprintf(fp,"\n");

}

}//Utiliza '*' para mostrar el año

void fyear(int t,int n,char s[5][23])

{<

/p>

int i,j;

switch(t){

caso 0:

for(j=19-6*n; j<22-6*n;j++)

s[2][j]=' ';

descanso;

caso 1:

para(i=0;i<5;i++){

para(j=18-6*n;j<22-6*n;j++)

s[i][j]=' ';

}

descanso;

caso 2:

s[1] [18-6*n]=' ';

s[3][22-6*n]=' ';

descanso;

caso 3:

s[1][18-6*n]=' ';

s[3][18-6*n]=' ';

descanso;

caso 4:

for(j=19-6*n;j<22-6*n;j++){

s[0][j]=' ';

s[4][j]=' ';

}

s[3][18 -6*n]=' ';

s[4][18-6*n]=' ';

descanso;

caso 5:

s[1][22-6*n]=' ';

s[3][18-6*n]=' ';

romper;

caso 6:

s[1][22-6*n]=' ';

romper;

caso 7:

for(i=1;i<5;i++){

for(j=18-6*n;j<22-6*n;j++ )

s[i][j]=' ';

}

descanso;

caso 8:

ruptura;

caso 9:

s[3][18-6*n]=' ';

ruptura;

}

}//Juzga los espacios en los números gráficos

long int f(long año, int mes)

{

if(mes<3) devuelve año-1;

else devuelve año;

}

long int g(int mes)

{

if(mes<3) devolver mes+13;

else devolver mes+1;

}

long int n(int año,int mes,int día)

{

return 1461L*f(año,mes)/4+153L*g(mes)/5+ día ;

}

int w(int año,int mes,int día)

{

return(int)(( n (año,mes,día)%7-621049L%7+7)%7);

}//Calcular la posición de la fecha de consulta

void yueli(int m ,ARCHIVO *fp)

{

struct tm *local;

long t;

long i,sw,wd,day,leap,k,j;

char title[]=" día uno dos tres cuatro cinco seis";

void rili(largo año,FILE *fp);

tiempo(&t);

local = localtime( &t);

local->tm_year = local->tm_year + 1900;

local->tm_mon ++;

Año=local->tm_year;

if(m==1){

printf("\t\t\t %s\n",str[local->tm_mon-1]); p>

fprintf(fp,"\t\t\t %s\n",str[local->tm_mon]);

printf("\t\t _________________________\n ") ;

fprintf(fp,"\t\t _________________________\n");

printf("\t\t %s\n",título);

fprintf(fp,"\t\t %s\n",title);

sw=w(local->tm_year,local->tm_mon,1);

salto=local->tm_year%4==0&&local->tm_year%100||local->tm_year%400==0;

for(i=0;i<12;i++ )

for(j=0;j<6;j++)

for(k=0;k<7;k++)

fecha[i] [j ][k]=0;

for(wd=0,day=1;day<=day_tbl[leap][local->tm_mon-1];day++)

{

date[local->tm_mon][wd][sw]=day;

sw=++sw%7;//Siete días a la semana, contando desde 0 a 6

if(sw==0) wd++;//La tabla de fechas tiene una fila cada siete días y una nueva fila comienza el domingo

}

for(j=0;j <6;j++){

printf("\t\t ");

fprintf(fp,"\t\t ") ;

for (k=0;k<7;k++)

if(date[local->tm_mon][j][k]){

printf("%3d ",fecha [local->tm_mon][j][k]);

fprintf(fp,"%3d ",fecha

[local->tm_mon][j][k]);

}

else{

printf(" ");

fprintf(fp,"%s"," ");

}

printf("\n");

fprintf(fp,"\ n");

}

printf("\t\t Hoy es: %ld año %ld mes %ld día,",local->tm_year,local->tm_mon ,local->tm_mday);

fprintf(fp,"\t\t Hoy es: %ld año %ld mes %ld día,",local->tm_year,local->tm_mon,local- >tm_mday);

switch(local->tm_wday){

caso 0:printf("Domingo\n");fprintf(fp,"Domingo\n");descanso ;

caso 1:printf("Lunes\n");fprintf(fp,"Lunes\n");break;

caso 2:printf("Martes\n" n");fprintf(fp,"Martes\n");descanso;

caso 3:printf("Miércoles\n");fprintf(fp,"Miércoles\n");descanso;

caso 4:printf("Jueves\n");fprintf(fp,"Jueves\n");descanso;

caso 5:printf("Viernes\n"); fprintf(fp,"Viernes\n");descanso;

caso 6:printf("Sábado\n");fprintf(fp,"Sábado\n");descanso;

default:printf("error\n");

}

printf(" \t\tLa hora actual es: %ld hora %ld minuto %ld segundo\n ",local->tm_hour,local->tm_min,local->tm_sec);

fprintf(fp," \t\tLa hora actual es: %ld hora %ld minuto %ld segundo\n" ,local->tm_hour,local->tm_min,local->tm_sec);

}//Muestra la hora actual del sistema

if(m==2)

rili(local->tm_year,fp);

}

void rili(año largo,FILE *fp)

{ int sw,leap , i,j,k,wd,día;

char title[]="日一二三四五六";

sw=w(año,1,1)

salto=año%4==0&&year%100||año%400==0;//Año bisiesto

for(i=0;i<12;i++)

for(j=0;j<6;j++)

for(k=0;k<7;k++)<

/p>

date[i][j][k]=0;//Establece la tabla de fechas en 0

nian(year,fp);

for( i= 0;i<12;i++)//Doce meses en un año

for(wd=0,day=1;day<=day_tbl[leap][i];day++)

{//Rellene la fecha del mes i+1 en la tabla de fechas

date[i][wd][sw]=day;

sw=++ sw%7 ;//Siete días por semana, contando de 0 a 6

if(sw==0) wd++;//La tabla de fechas tiene una fila cada siete días y una nueva fila comienza el Domingo

}

for(i=0;i<11;i+=2)

{//Primero calcula el número máximo de semanas en el mes i +1 y mes i+2

// for(wd=0,k=0;k<7;k++)//La sexta fila de la tabla de fechas tiene una fecha, luego wd!=0

// wd+=fecha [i][5][k]+fecha[i+2][5][k];

// wd=6;

printf("\t\t %s\t\t\t\t%s\n",str[i],str[i+1]);

fprintf( fp,"\t\t%s\t\ t\t\t%s\n",str[i],str[i+1]);

printf(" _________________________ _________________________\n ");

fprintf( fp," _______________________________ ___________________________\n");

printf(" %s %s \n",título,título);

fprintf(fp," %s %s \ n",título,título);

for(j=0;j<6;j++)

{

printf(" ");// Genera cuatro caracteres en blanco

//La columna de la izquierda es el mes i+1, la columna de la derecha es el mes i+2

fprintf(fp," ");

for(k=0;k<7;k++)

if(fecha[i][j][k]){

printf("%4d", fecha[i][j][k]);

fprintf(fp,"%4d",fecha[i][j][k] ]);

}

else{

printf(" ");

fprintf(fp," ");

}

printf(" ");//Emite diez caracteres en blanco

fprintf(fp," ");

for(k =0;k<7;k++)

if(fecha[i+1][j][k]){

printf("%4d",fecha[i+ 1][j][k]);

p>

fprintf(fp,"%

4d",fecha[i+1][j][k]);

}

else{

printf(" ");

fprintf(fp," ");

}

printf(" \n");

fprintf(fp," \n" );

}

//Escriba Enter para generar el calendario de la siguiente línea

}

}

void main()

{

ARCHIVO *fp;

int elección;

if((fp=fopen(" E: \\out1.txt","w"))==NULL){

printf("¡error de apertura!\n");

exit(0);

}

yueli(1,fp);

while(1){

printf("¡Bienvenido a este programa! Por favor sigue las indicaciones para seleccionar \n");

printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -*-* -*\n");

printf("Presione [1] para ver la información del día actual y el calendario de este mes\n");

printf(" Presione [2] para ver el calendario del año actual \n");

printf("Presione [3] para ver el calendario de un año determinado\n");

printf ("Presiona [4] para ver el calendario del año siguiente\n");

printf("Presiona [5] para ver el calendario del año anterior\n");

printf("Presione [0] para salir\n");

printf("*-*-*-*-*-*-*-*-*-*-*-*-* -*-*-*-*-*-*\n");

printf("Ingrese su elección y presione Enter para finalizar:");

scanf("% d",&choice);

switch(choice){

caso 1:yueli(1,fp);break;

caso 2:yueli(2 ,fp);break;

caso 3:

p>

printf("Ingrese el año que desea consultar: ");//Ingrese el año

scanf("%d",&Año);

rili(Año,fp);

break;

caso 4:rili(++Año ,fp);break;

case 5:rili(--Year, fp);break;

case 0:printf("¡Gracias por tu uso, adiós! \n");retorno;

}

}

fclose(fp);

retorno;

}