Cool C/C++

Programacion en C/C++

Home FAQ Como mostrar calendarios de forma simple
Como mostrar calendarios de forma simple PDF Imprimir E-mail
Escrito por adrianvaca   
Martes, 22 de Marzo de 2011 23:59

En la sección Fuentes / Fecha y hora se tienen programas con interfaces vistosas que muestran calendarios, en esta faq veamos como generar de forma simple un calendario y mostrarlo luego por pantalla:

Al inicio la biblioteca de siempre:

 
#include <stdio.h> 



Ahora una función de utilería que mostrará un calendario por pantalla y que recibe de parámetros el número de días transcurridos desde el 01 de Enero de 1900 al año y mes actual:

 
/* n almacena el numero de dias a mostrar */
void mostrar_calendario(unsigned long diasint n)
{
       
int ifila=5columnak;

       
printf("\tDomingo  Lunes  Martes  Miercoles  Jueves  Viernes  Sabado\n");

       for(
i=1<= ni++, dias++)
      {
            
k=dias 7/* Divide dias entre 7, el residuo da el dia actual */
            
printf("\t  %d"i); /* Muestra el dia */

             
if(k==6/* Si el dia es Sabado salta una linea */
                
printf("\n");
       }



Ahora la función principal que dado un año y mes muestre el calendario:

 
void calendario(int anioint mes)
{
    
/* Numero de dias desde 1/1/1900 al anio y mes actual */
    
unsigned long dias=0

     
int i;

     for(
i=1900;i<anio;i++)
     {
          if(
i%4==0/* Si es bisiesto agrega 366 dias */
             
dias+=366;
           else 
/* caso contrario 365 dias */
             
dias+=365;
     }

     for(
i=1;i<mes;i++)
     {
           
/* Para Enero,Marzo,...,Diciembre cuenta 31 dias */     
           
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12
              
dias+=31;
           
/* Para Abril,Junio,Septiembre,Noviembre cuenta 30 dias */
           
else if(i==4||i==6||i==9||i==11
              
dias+=30;
           
/* Si es Febrero y bisiesto cuenta 29 dias */           
           
else if(i==&& anio%4==0
              
dias+=29;
           
/* Si es Febrero y no es bisiesto cuenta 28 dias */
           
else 
              
dias+=28;
      }

      if(
i==1||i==3||i==5||i==7||i==8||i==10||i==12)
         
mostrar_calendario(dias31); /* Calendario con 31 dias */
      
else if(i==4||i==6||i==9||i==11)
         
mostrar_calendario(dias30); /* Calendario con 30 dias */
      
else if(i==&& anio%4==0)
         
mostrar_calendario(dias29); /* Calendario con 29 dias */
      
else
         
mostrar_calendario(dias28 ) ; /* Calendario con 28 dias */



Una vez definidas estas 2 funciones, mostrar un calendario, es tan simple como sigue:

 
int main ()
{
    
calendario(20074);
    
getchar();
    
    return 
0;



Se muestra en el ejemplo el calendario de Abril del 2007:

 
Otros artículos

Comentarios  

 
+1 #1 Matias 21-04-2011 21:21
Ya lo tengo en pdf en mi máquina y listo para copiar la idea. Está muy bueno! :lol:

P/D: Yo empezaría por lunes ,martes, y usaría LUN, MAR, para que coinsidan las columnas pero esta buena la idea!
Citar
 

Escribir un comentario


Código de seguridad
Refescar