Autor
|
Tema: COMPARAR FECHAS (Leído 2,595 veces)
|
mateo26
Desconectado
Mensajes: 1
|
Hola, tengo que realizar un programa en C++ que invocando las siguientes funciones sea capaz de comparar fechas. no se como hacer para la salida me suelte lo que necesito.
//Considere que se le proveen 2 funciones con el siguiente perfil:
int comparar_fechas(int d1, int m1, int a1, int d2, int m2, int a2) : Esta función recibe 2 fechas y retorna 1 si la primera es posterior a la segunda, 0 si son iguales o -1 si la primera es anterior a la segunda. void imprimir_fecha(int d, int m, int a) : Este procedimiento imprime por pantalla la fecha pasada como parámetro con el siguiente formato "d/m/a" Escriba un programa que solicite al usuario el ingreso de 2 fechas. Cada fecha se ingresará proporcionando un valor entero para el día, mes y año de cada una de las fechas. Deberá almacenar los valores propuestos en variables enteras. A continuación, su programa deberá decidir cuál de las 2 fechas es mayor e informarlo apropiadamente tal como se muestra en los ejemplos de ejecución. Para ello debe utilizar las funciones provistas.
#include <iostream> using namespace std;
void imprimir_fecha(int d, int m, int a) { cout<< d << "/" << m << "/" << a; }
int comparar_fechas(int d1, int m1, int a1, int d2, int m2, int a2) { if (a1 < a2) return -1; else if (a1 > a2) return 1; else if (m1 < m2) return -1; else if (m1 > m2) return 1; else if (d1 < d2) return -1; else if (d2 > d1) return 1; else return 0; }
int main() { int d1,m1,a1,d2,m2,a2;
//Solicito ingreso primer fecha cout << "Ingrese dia de la primer fecha: "<<endl; cin >> d1;
cout << "Ingrese mes de la primer fecha: "<<endl; cin >> m1;
cout << "Ingrese anio de la primer fecha: "<<endl; cin >> a1; //Solicito ingreso segunda fecha cout << "Ingrese dia de la segunda fecha: "<<endl; cin >> d2;
cout << "Ingrese mes de la segunda fecha: "<<endl; cin >> m2;
cout << "Ingrese anio de la segunda fecha: "<<endl; cin >> a2;
}
|
|
|
En línea
|
|
|
|
98Fran
Desconectado
Mensajes: 35
|
Esto puede que te sirva échale un ojo. #include <iostream> using namespace std; struct fecha{ int dia, mes, año; }d1,d2; void pedirFecha(); fecha mayor(); void mostrarMayor(fecha); int main(){ pedirFecha(); fecha fechaMayor = mayor(); mostrarMayor(fechaMayor); cin.get(); return 0; } void pedirFecha(){ cout<<"Defina Fecha[1] --- dia/mes/año: "; cin>>d1.dia>>d1.mes>>d1.año; cout<<"\nDefina Fecha[2] --- dia/mes/año: "; cin>>d2.dia>>d2.mes>>d2.año; } fecha mayor(){ fecha m; if(d1.año == d2.año){ if(d1.mes == d2.mes){ if(d1.dia == d2.dia){ cout<<"Lo 2 son el mismo dia"; } else{ if(d1.dia > d2.dia){ m = d1; } else{ m = d2; } } } else{ if(d1.mes > d2.mes){ m = d1; } else{ m = d2; } } } else{ if(d1.año > d2.año){ m = d1; } else{ m = d2; } } return m; } void mostrarMayor(fecha mayor){ cout<<"\n-------------------------------------------"; cout<<"\nLa mayor fecha es: "<<mayor.dia<<"/"<<mayor.mes<<"/"<<mayor.año<<endl; } /*PD: usa [code=cpp]*Tu Codigo aquí*
así se vera mucho mejor el código. Saludos*/[/code]
|
|
|
En línea
|
|
|
|
98Fran
Desconectado
Mensajes: 35
|
Esto puede que te sirva échale un ojo. #include <iostream> using namespace std; struct fecha{ int dia, mes, año; }d1,d2; void pedirFecha(); fecha mayor(); void mostrarMayor(fecha); int main(){ pedirFecha(); fecha fechaMayor = mayor(); mostrarMayor(fechaMayor); cin.get(); return 0; } void pedirFecha(){ cout<<"Defina Fecha[1] --- dia/mes/año: "; cin>>d1.dia>>d1.mes>>d1.año; cout<<"\nDefina Fecha[2] --- dia/mes/año: "; cin>>d2.dia>>d2.mes>>d2.año; } fecha mayor(){ fecha m; if(d1.año == d2.año){ if(d1.mes == d2.mes){ if(d1.dia == d2.dia){ cout<<"Lo 2 son el mismo dia"; } else{ if(d1.dia > d2.dia){ m = d1; } else{ m = d2; } } } else{ if(d1.mes > d2.mes){ m = d1; } else{ m = d2; } } } else{ if(d1.año > d2.año){ m = d1; } else{ m = d2; } } return m; } void mostrarMayor(fecha mayor){ cout<<"\n-------------------------------------------"; cout<<"\nLa mayor fecha es: "<<mayor.dia<<"/"<<mayor.mes<<"/"<<mayor.año<<endl; } /*PD: usa [code=cpp]*Tu Codigo aquí*
así se vera mucho mejor el código. Saludos*/[/code] PD: No uso año sino ani-o (sin el -) pero el foro lo cambia automaticamente por que le da la gana xD. No se puede usar el caracter Ñ en C++. Saludos. Si son más de 2 fechas se pueden usar vectores y es más fácil la verdad pero hice este programa cuando no tenía mucha idea de C++ solo lo básico.
|
|
« Última modificación: 31 Agosto 2019, 19:54 pm por 98Fran »
|
En línea
|
|
|
|
98Fran
Desconectado
Mensajes: 35
|
Voy a decirte un par de cosas del código para que veas algunos fallos (ya que yo también estoy aprendiendo y me están ayudando por aquí en el foro) Lo primero: void imprimir_fecha(int d, int m, int a) { cout<< d << "/" << m << "/" << a; } int comparar_fechas(int d1, int m1, int a1, int d2, int m2, int a2) { if (a1 < a2) return -1; else if (a1 > a2) return 1; else if (m1 < m2) return -1; else if (m1 > m2) return 1; else if (d1 < d2) return -1; else if (d2 > d1) return 1; else return 0; }
Has creado 2 funciones y no las has llamado en el main(), por tanto cuando inicialices el programa, este va ir a buscar la función main(), va a leer todas las instrucciones de main(), (que en este caso solo es meter valores a las variables) y se va a terminar y no va a hacer nada más. Para que funcione tus funciones tienes que llamarlas con: int main(){ int d1,m1,a1,d2,m2,a2; //Solicito ingreso primer fecha cout << "Ingrese dia de la primer fecha: "<<endl; cin >> d1; cout << "Ingrese mes de la primer fecha: "<<endl; cin >> m1; cout << "Ingrese año de la primer fecha: "<<endl; cin >> a1; //Solicito ingreso segunda fecha cout << "Ingrese dia de la segunda fecha: "<<endl; cin >> d2; cout << "Ingrese mes de la segunda fecha: "<<endl; cin >> m2; cout << "Ingrese año de la segunda fecha: "<<endl; cin >> a2; // y int x = comparar_fecha(d1,m1,a1,d2,m2,a2); //Todo esto importante después de los cout/cin de las variables. if(x == 0) cout<<"Son el mismo dia"; if(x == 1) imprimir_fecha(d1,m1,a1); //En el caso de la fecha 1; if(x == -1) imprimir_fecha(d2,m2,a2); //En el caso de la fecha 2; }
Y { if (a1 < a2) return -1; else if (a1 > a2) return 1; else if (m1 < m2) return -1; else if (m1 > m2) return 1; else if (d1 < d2) return -1; else if (d2 > d1) return 1; else return 0; }
esta mál, el ultimo else if es lo mismo. d1 <d2 == d2 > d1.
|
|
« Última modificación: 31 Agosto 2019, 20:19 pm por 98Fran »
|
En línea
|
|
|
|
98Fran
Desconectado
Mensajes: 35
|
Me acabo de dar cuenta de que puede que no sepas que es una estructura xD. ignora: struct fecha{ int dia, mes, año; }d1,d2;
Cambia: d1.dia por d1 d1.mes por m1 d1.an-io por a1 ------------------ d2.dia == d2 d2.mes == m2 d2.año == a2 y int main() { int d1,m1,a1,d2,m2,a2;
|
|
« Última modificación: 31 Agosto 2019, 20:25 pm por 98Fran »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
comparar horas, fechas..... C# (solucionado)
.NET (C#, VB.NET, ASP)
|
skan
|
3
|
30,582
|
24 Noviembre 2008, 10:42 am
por skan
|
|
|
SQL--Where fechas (Condición de fechas)
« 1 2 »
Bases de Datos
|
noobdai
|
16
|
37,837
|
6 Marzo 2010, 17:38 pm
por noobdai
|
|
|
Comparar fechas. Ayuda! C++
« 1 2 »
Programación C/C++
|
Wazzp
|
16
|
19,095
|
25 Septiembre 2010, 19:33 pm
por Wazzp
|
|
|
Microsoft: comparar IE9 y Firefox 4 es como comparar “manzanas y naranjas”
« 1 2 »
Noticias
|
wolfbcn
|
15
|
7,955
|
27 Marzo 2011, 04:35 am
por Foxy Rider
|
|
|
Comparar Fechas
« 1 2 »
Desarrollo Web
|
Rodrigo Inzaurralde
|
11
|
5,610
|
16 Septiembre 2017, 23:00 pm
por engel lex
|
|