| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
Naitmeir
Registrado: 20 Nov 2007 Mensajes: 14 Ubicación: Barcelona
| Publicado: 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
| Publicado: 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 | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |