Autor
|
Tema: Ayuda con este programa en C (Leído 2,821 veces)
|
mari2diaz
Desconectado
Mensajes: 24
|
Quiero comparar si una fecha es mayor que la otra en este programa si alguien me puede dar una idea de como hacerlo que no sea con if() /* Escribe un programa para calcular el numero de dias que hay entre dos fechas; declarar fecha como una estructura */ #include<stdio.h> struct fecha{ unsigned int dia, mes, año; }; int main(int argc, char *argv[]){ struct fecha f[3]; int i, dia, mes, año; for(i=0; i<2; i++){ printf("Introduzca fecha %d: ", i +1); scanf("%d %d %d", &f [i ]. dia, &f [i ]. mes, &f [i ]. año ); } dia = f[0].dia - f[1].dia; mes = f[0].mes - f[1].mes; año = f[0].año - f[1].año; año = año * 360; mes = mes * 30; f[2].dia = año + (mes) + (dia); printf("\n\n\nDias Trascurridos %d", f [2]. dia); return 0; }
|
|
|
En línea
|
|
|
|
aurquiel
Desconectado
Mensajes: 32
|
1-Evitar la ñ usar variables como año 2- Si usas unsigned en la estrutura las demas variabbles tambien deben ser unsgined 3-Declaraste tres estructuras la ultima estructura que aloja el resultado hubiera sido mas factible solo declarar unas variables. 4- El operador ternario (a>b) ? 1:0 puede ser una sustitucion al if.#include<stdio.h> struct fecha{ unsigned int dia, mes, año; }; int main(){ struct fecha f[3]; unsigned int i = 0, dia = 0, mes = 0, año= 0; for(i=0; i<2; i++){ printf("Introduzca fecha %u: ", i +1); scanf("%u %u %u", &f [i ]. dia, &f [i ]. mes, &f [i ]. año ); } dia = f[0].dia - f[1].dia; mes = f[0].mes - f[1].mes; año = f[0].anioo - f[1].año; año = año * 360; mes = mes * 30; f[2].dia = anioo + mes + dia; printf("\n\n\nDias Trascurridos %d", f [2]. dia); printf("La fecha 1 es %s que la fecha 2\n", (dia >=0) ? "menor":"mayor"); return 0; }
|
|
« Última modificación: 23 Julio 2018, 18:00 pm por aurquiel »
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Si bien es cierto que está bien usar tipos que concuerden entre sí, yo no recomendaría usar unsigned salvo que sea totalmente necesario. Fíjate, por ejmeplo, en esto: (dia>=0) ? "menor":"mayor"dia es unsigned, así que siempre va a ser mayor o igual a 0. La lógica y las operaciones cambian, además de que conseguiremos fácilmente un underflow al andar haciendo restas sin comprobaciones (sin ir más lejos, si el dia o el mes de [1] es mayor que el de - saldrán resultados incorrectos).
Y en cuanto a la pregunta original, comparar fechas es como restar. Si el mes de la fecha más alta es menor que el de la más pequeña, igual que en una resta: le restas 1 al año y le sumas 12 al mes. Parecido para los días.
|
|
|
En línea
|
|
|
|
CalgaryCorpus
|
Hay que considerar que los años pueden ser bisiestos.
Que tal si calcular la distancia hacia una fecha pasada comun de cada fecha y luego la diferencia entre ambas ditancias?
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Y qué tal si de hace con time.h, que ya tiene todo eso pensado?
|
|
|
En línea
|
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Basta ver el comentario del código para suponer que la idea es hacerlo a mano.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
A mi me ha dado la impresión de que lo que quiere es saber si una fecha va antes de otra y que desconocía que con time.h se puede hacer.
|
|
|
En línea
|
|
|
|
srWhiteSkull
|
/* Escribe un programa para calcular el numero de dias que hay entre dos fechas; declarar fecha como una estructura */ No pone de que forma debes hacer el programa, simplemente te indica que resuelvas la forma para calcular los días entre dos fechas. Y encima fecha puedes declararla como una estructura time_t (Ejemplo, time_t fecha; ). Si esto no es lo que buscaba el profesor este argumento astuto puede usarse contra él PD Hay que tener en cuenta que el resultado de la función difftime() lo devuelve en segundos, no es como si al usarla resolviera completamente el ejercicio.
|
|
« Última modificación: 26 Julio 2018, 14:41 pm por srWhiteSkull »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda con este programa
Programación C/C++
|
daxelmejor
|
1
|
2,372
|
13 Mayo 2010, 16:00 pm
por Akai
|
|
|
Ayuda con este programa en C++
Programación C/C++
|
miguelb18
|
1
|
2,190
|
25 Agosto 2010, 17:23 pm
por Littlehorse
|
|
|
Ayuda con este programa
Programación C/C++
|
nosotros12
|
1
|
2,074
|
18 Noviembre 2011, 09:06 am
por s00rk
|
|
|
ayuda con este programa
Dudas Generales
|
ZXILER
|
1
|
2,619
|
16 Marzo 2012, 23:16 pm
por Aprendiz-Oscuro
|
|
|
ayuda con este programa
Java
|
hairam
|
2
|
2,145
|
9 Julio 2012, 20:56 pm
por rommel89
|
|