elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  COMPARAR FECHAS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: COMPARAR FECHAS  (Leído 2,107 veces)
mateo26

Desconectado Desconectado

Mensajes: 1


Ver Perfil
COMPARAR FECHAS
« en: 31 Agosto 2019, 19:17 pm »

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 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;



}


En línea

98Fran

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Re: COMPARAR FECHAS
« Respuesta #1 en: 31 Agosto 2019, 19:46 pm »

Esto puede que te sirva échale un ojo.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct fecha{
  6. int dia, mes, año;
  7. }d1,d2;
  8.  
  9. void pedirFecha();
  10. fecha mayor();
  11. void mostrarMayor(fecha);
  12.  
  13. int main(){
  14.  
  15. pedirFecha();
  16. fecha fechaMayor = mayor();
  17. mostrarMayor(fechaMayor);
  18.  
  19.  
  20.  
  21.  
  22. cin.get();
  23. return 0;
  24. }
  25.  
  26. void pedirFecha(){
  27.  
  28. cout<<"Defina Fecha[1] --- dia/mes/año: ";
  29. cin>>d1.dia>>d1.mes>>d1.año;
  30. cout<<"\nDefina Fecha[2] --- dia/mes/año: ";
  31. cin>>d2.dia>>d2.mes>>d2.año;
  32.  
  33. }
  34.  
  35. fecha mayor(){
  36. fecha m;
  37.  
  38. if(d1.año == d2.año){
  39. if(d1.mes == d2.mes){
  40. if(d1.dia == d2.dia){
  41. cout<<"Lo 2 son el mismo dia";
  42. }
  43. else{
  44. if(d1.dia > d2.dia){
  45. m = d1;
  46. }
  47. else{
  48. m = d2;
  49. }
  50. }
  51. }
  52. else{
  53. if(d1.mes > d2.mes){
  54. m = d1;
  55. }
  56. else{
  57. m = d2;
  58. }
  59. }
  60. }
  61. else{
  62. if(d1.año > d2.año){
  63. m = d1;
  64. }
  65. else{
  66. m = d2;
  67. }
  68. }
  69.  
  70. return m;
  71. }
  72.  
  73. void mostrarMayor(fecha mayor){
  74. cout<<"\n-------------------------------------------";
  75. cout<<"\nLa mayor fecha es: "<<mayor.dia<<"/"<<mayor.mes<<"/"<<mayor.año<<endl;
  76. }
  77.  
  78. /*PD: usa [code=cpp]*Tu Codigo aquí*
así se vera mucho mejor el código. Saludos*/[/code]


En línea

98Fran

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Re: COMPARAR FECHAS
« Respuesta #2 en: 31 Agosto 2019, 19:49 pm »

Esto puede que te sirva échale un ojo.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct fecha{
  6. int dia, mes, año;
  7. }d1,d2;
  8.  
  9. void pedirFecha();
  10. fecha mayor();
  11. void mostrarMayor(fecha);
  12.  
  13. int main(){
  14.  
  15. pedirFecha();
  16. fecha fechaMayor = mayor();
  17. mostrarMayor(fechaMayor);
  18.  
  19.  
  20.  
  21.  
  22. cin.get();
  23. return 0;
  24. }
  25.  
  26. void pedirFecha(){
  27.  
  28. cout<<"Defina Fecha[1] --- dia/mes/año: ";
  29. cin>>d1.dia>>d1.mes>>d1.año;
  30. cout<<"\nDefina Fecha[2] --- dia/mes/año: ";
  31. cin>>d2.dia>>d2.mes>>d2.año;
  32.  
  33. }
  34.  
  35. fecha mayor(){
  36. fecha m;
  37.  
  38. if(d1.año == d2.año){
  39. if(d1.mes == d2.mes){
  40. if(d1.dia == d2.dia){
  41. cout<<"Lo 2 son el mismo dia";
  42. }
  43. else{
  44. if(d1.dia > d2.dia){
  45. m = d1;
  46. }
  47. else{
  48. m = d2;
  49. }
  50. }
  51. }
  52. else{
  53. if(d1.mes > d2.mes){
  54. m = d1;
  55. }
  56. else{
  57. m = d2;
  58. }
  59. }
  60. }
  61. else{
  62. if(d1.año > d2.año){
  63. m = d1;
  64. }
  65. else{
  66. m = d2;
  67. }
  68. }
  69.  
  70. return m;
  71. }
  72.  
  73. void mostrarMayor(fecha mayor){
  74. cout<<"\n-------------------------------------------";
  75. cout<<"\nLa mayor fecha es: "<<mayor.dia<<"/"<<mayor.mes<<"/"<<mayor.año<<endl;
  76. }
  77.  
  78. /*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 Desconectado

Mensajes: 35


Ver Perfil
Re: COMPARAR FECHAS
« Respuesta #3 en: 31 Agosto 2019, 20:13 pm »

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:
Código
  1. void imprimir_fecha(int d, int m, int a)
  2. {
  3.    cout<< d << "/" << m << "/" << a;
  4. }
  5.  
  6. int comparar_fechas(int d1, int m1, int a1, int d2, int m2, int a2)
  7. {
  8.    if (a1 < a2)
  9.        return -1;
  10.    else if (a1 > a2)
  11.        return 1;
  12.    else
  13.        if (m1 < m2)
  14.            return -1;
  15.        else if (m1 > m2)
  16.            return 1;
  17.        else
  18.            if (d1 < d2)
  19.                return -1;
  20.            else if (d2 > d1)
  21.                return 1;
  22.            else
  23.                return 0;
  24. }

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:


Código
  1. int main(){
  2.   int d1,m1,a1,d2,m2,a2;
  3.  
  4.    //Solicito ingreso primer fecha
  5.    cout << "Ingrese dia de la primer fecha: "<<endl;
  6.    cin >> d1;
  7.  
  8.    cout << "Ingrese mes de la primer fecha: "<<endl;
  9.    cin >> m1;
  10.  
  11.    cout << "Ingrese año de la primer fecha: "<<endl;
  12.    cin >> a1;
  13.  
  14.    //Solicito ingreso segunda fecha
  15.    cout << "Ingrese dia de la segunda fecha: "<<endl;
  16.    cin >> d2;
  17.  
  18.    cout << "Ingrese mes de la segunda fecha: "<<endl;
  19.    cin >> m2;
  20.  
  21.    cout << "Ingrese año de la segunda fecha: "<<endl;
  22.    cin >> a2;
  23.  
  24. // y
  25.  
  26.    int x = comparar_fecha(d1,m1,a1,d2,m2,a2); //Todo esto importante después de los cout/cin de las variables.
  27.  
  28.    if(x == 0)
  29. cout<<"Son el mismo dia";
  30.    if(x == 1)
  31.   imprimir_fecha(d1,m1,a1); //En el caso de la fecha 1;
  32.    if(x == -1)
  33.     imprimir_fecha(d2,m2,a2); //En el caso de la fecha 2;
  34. }

Y

Código
  1. {
  2.    if (a1 < a2)
  3.        return -1;
  4.    else if (a1 > a2)
  5.        return 1;
  6.    else
  7.        if (m1 < m2)
  8.            return -1;
  9.        else if (m1 > m2)
  10.            return 1;
  11.        else
  12.            if (d1 < d2)
  13.                return -1;
  14.            else if (d2 > d1)
  15.                return 1;
  16.            else
  17.                return 0;
  18. }

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 Desconectado

Mensajes: 35


Ver Perfil
Re: COMPARAR FECHAS
« Respuesta #4 en: 31 Agosto 2019, 20:23 pm »

Me acabo de dar cuenta de que puede que no sepas que es una estructura xD.
ignora:

Código
  1. struct fecha{
  2. int dia, mes, año;
  3. }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

Código:
int main()
{
   int d1,m1,a1,d2,m2,a2;
« Última modificación: 31 Agosto 2019, 20:25 pm por 98Fran » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
comparar horas, fechas..... C# (solucionado)
.NET (C#, VB.NET, ASP)
skan 3 29,935 Último mensaje 24 Noviembre 2008, 10:42 am
por skan
SQL--Where fechas (Condición de fechas) « 1 2 »
Bases de Datos
noobdai 16 37,309 Último mensaje 6 Marzo 2010, 17:38 pm
por noobdai
Comparar fechas. Ayuda! C++ « 1 2 »
Programación C/C++
Wazzp 16 18,119 Último mensaje 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,177 Último mensaje 27 Marzo 2011, 04:35 am
por Foxy Rider
Comparar Fechas « 1 2 »
Desarrollo Web
Rodrigo Inzaurralde 11 4,987 Último mensaje 16 Septiembre 2017, 23:00 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines