/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Algoritmo de fecha transcurrida mostrando dias,meses y años

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Naitmeir



Registrado: 20 Nov 2007
Mensajes: 14
Ubicación: Barcelona

MensajePublicado: 27/11/2007 4:30 pm
Título: Algoritmo de fecha transcurrida mostrando dias,meses y años

Hola gente, nuevamente nos vemos otra vez las caras por aqui, esta vez estoy aun mas liado que antes, como no podia ser de otra forma...
Total que los años y los meses estan resueltos, faltan los dias transcurridos, teniendo en cuenta las fechas que ya mostramos, que son los meses y los años, transcurridos.

Ahi va...

Código:
// EJERCICIO DE CALENDARIO PARA CALCULAR EL TIEMPO TRANSCURRIDO MOSTRANDO EL NUMERO DE DIAS, MESES Y AÑOS


#include <stdio.h>
#include <conio.h>
#include <windows.h>   


void menu();
int diasmes(int,int);


void main ()
{

menu();

}


void menu()
{
//DECLARACION DE VARIABLES
int dia, mes, ano, dia2, mes2, ano2, difano, difmes,i;
//VARIABLES FIJAS
int enero=31,febrero=28,marzo=31,abril=30, mayo=31,junio=30, julio=31;
int agosto=31, septiembre=30,octubre=31, noviembre=30, diciembre=31;



         printf("\n\t- Introduce el dia: ");scanf("%d",&dia);
         printf("\t- Introduce el mes: ");scanf("%d",&mes);
         printf("\t- Introduce el a\x0A5o: ");scanf("%d",&ano);
         
         printf("\n\t- Introduce el dia: ");scanf("%d",&dia2);
         printf("\t- Introduce el mes: ");scanf("%d",&mes2);
         printf("\t- Introduce el a\x0A5o: ");scanf("%d",&ano2);
   

         //COMPRUEBA QUE ESTEN BIEN INTRODUCIDAS LAS FECHAS         
         if (dia>diasmes(mes,ano) || dia2>diasmes(mes2,ano2))

            printf("\n\t\tDia incorrecto\n");

         if (mes>12 || mes2>12)

            printf("\n\t\tEl mes es incorrecto\n");

         if (ano>ano2)

            printf("\n\t\tHas introducido mal el a\x0A5o\n");   

         //DICE LOS AÑOS

         if (ano==ano2)
         
         difano=0;
         

         else{

            if (ano<ano2)

            difano=ano2-ano;
               
         }


         
         //DICE LOS MESES

         if (mes==mes2)

            difmes=0;
         
         else{

            if (difano==0 && mes>mes2)

               printf("\n\tError en les mes\n");

            else {

               if (difano==0 && mes<mes2)
               {   
               difmes=mes2-mes;
               }
               
               else
               {
                  if (difano>=1 && mes>mes2)
                  {   
                  i=12-mes;
                  difmes=mes2+i;
                  difano--;
                  }
                  else
                  {
                     if(mes<mes2)
                        difmes=mes2-mes;
                  }
               }                           

            }


            
         }

         /*FALTA CALCULAR LOS DIAS, CON LA FUNCION DEL BISIESTO LA INTENCION ERA SUMAR LOS AÑOS
         BISIESTOS ENTRE LAS DOS FECHAS PARA DESPUES SUMAR TANTOS DIAS COMO AÑOS BISIESTOS*/

         //DICE DIAS TRANSCURRIDOS (FALTA)





         
printf("\nEl tiempo transcurrido de una fecha a otra son %d meses y %d a\x0A5o\n\n",difmes,difano);

}


//COMPROVAMOS SI EL AÑO ES BISIESTO
int diasmes(int mes,int ano)
{
   int dias;

            if (mes==2){
               if ((ano%4)==0)
                  dias=29;
                  else{
                     if ((ano%400)==0)
                     dias=29;
                     else
                     dias=28;
                  }
               
            }
            else {
               if ( mes==1 || mes==3 || mes == 5 || mes == 7 || mes==8 || mes == 10 || mes ==12)
               dias=31;
               else
               dias=30;
            }
         return (dias);
            
printf("\n");

printf("\n\n\n");
}



Esta compilado con Microsoft Visual Studio 6.0
Volver arriba
Naitmeir



Registrado: 20 Nov 2007
Mensajes: 14
Ubicación: Barcelona

MensajePublicado: 28/11/2007 6:39 am
Título:

Veamos ya tengo los dias, asi quedaria...

Código:
// EJERCICIO DE CALENDARIO PARA CALCULAR EL TIEMPO TRANSCURRIDO MOSTRANDO EL NUMERO DE DIAS, MESES Y AÑOS


#include <stdio.h>
#include <conio.h>
#include <windows.h>   


void menu();
int diasmes(int,int);


void main ()
{

menu();

}


void menu()
{
//DECLARACION DE VARIABLES
int dia, mes, ano, dia2, mes2, ano2, difano, difmes,i,difdia;
//VARIABLES FIJAS
int enero=31,febrero=28,marzo=31,abril=30, mayo=31,junio=30, julio=31;
int agosto=31, septiembre=30,octubre=31, noviembre=30, diciembre=31;


         printf("\nINTRODUCE LA FECHA INCIAL\n");         

         printf("\n\t- Introduce el dia: ");scanf("%d",&dia);
         printf("\t- Introduce el mes: ");scanf("%d",&mes);
         printf("\t- Introduce el a\x0A5o: ");scanf("%d",&ano);
         
         printf("\nINTRODUCE LA FECHA POSTERIOR\n");

         printf("\n\t- Introduce el dia: ");scanf("%d",&dia2);
         printf("\t- Introduce el mes: ");scanf("%d",&mes2);
         printf("\t- Introduce el a\x0A5o: ");scanf("%d",&ano2);
   

         //COMPRUEBA QUE ESTEN BIEN INTRODUCIDAS LAS FECHAS         
         if (dia>diasmes(mes,ano) || dia2>diasmes(mes2,ano2))

            printf("\n\t\tDia incorrecto\n");

         if (mes>12 || mes2>12)

            printf("\n\t\tEl mes es incorrecto\n");

         if (ano>ano2)

            printf("\n\t\tHas introducido mal el anyo\n");   


         //DICE LOS DIAS
         if (dia>dia2)
         {
            difdia=(diasmes(mes,ano)-dia)+dia2;
            mes++;
         }
         else difdia=dia2-dia;

         //DICE LOS AÑOS

         if (ano==ano2)
         
         difano=0;
         

         else{

            if (ano<ano2)

            difano=ano2-ano;
               
         }


         
         //DICE LOS MESES

         if (mes==mes2)

            difmes=0;
         
         else{

            if (difano==0 && mes>mes2)

               printf("\n\tError en les mes\n");

            else {

               if (difano==0 && mes<mes2)
               {   
               difmes=mes2-mes;
               }
               
               else
               {
                  if (difano>=1 && mes>mes2)
                  {   
                  i=12-mes;
                  difmes=mes2+i;
                  difano--;
                  }
                  else
                  {
                     if(mes<mes2)
                        difmes=mes2-mes;
                  }
               }                           

            }


            
         }



         
printf("\n- Entre la fecha posterior y la incial, la diferencia son\n");
printf("  %d dias, %d meses y %d a\x0A5os\n\n",difdia,difmes,difano);

}


//COMPROVAMOS SI EL AÑO ES BISIESTO
int diasmes(int mes,int ano)
{
   int dias;

            if (mes==2){
               if ((ano%4)==0)
                  dias=29;
                  else{
                     if ((ano%400)==0)
                     dias=29;
                     else
                     dias=28;
                  }
               
            }
            else {
               if ( mes==1 || mes==3 || mes == 5 || mes == 7 || mes==8 || mes == 10 || mes ==12)
               dias=31;
               else
               dias=30;
            }
         return (dias);
            
printf("\n");

printf("\n\n\n");
}


Pasa otra cosa, que los años bisiestos no los cuenta, y deberia mostrar lo mismo que muestra ahora, sumando a los dias los años bisiestos que hay entre la fecha inicial y la posterior, para que fuera mas exacto
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com