Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: _OLAYA_ en 19 Septiembre 2015, 12:15 pm



Título: nivel 0 programa 2 cambio de formato a una fecha
Publicado por: _OLAYA_ en 19 Septiembre 2015, 12:15 pm
Buenos dias,

Sin aburriros con mi historia, despues de mi gran programa hola mundo en C#, quiero hacer un ejercicio que consiste en pedir una fecha por pantalla dd/mm/aaaa y volver a mostrarla pero de esta forma dd-mm-aa.

Lo estoy intentando con printf y scanf pero me da que se me escapa algo.

No quiero el ejercicio hecho, si no, un camino a seguir, una idea...

Gracias


Título: Re: nivel 0 programa 2 cambio de formato a una fecha
Publicado por: ivancea96 en 19 Septiembre 2015, 13:02 pm
Este subforo es C/C++. C# es en .NET.

De todos modos, con scanf puedes hacer:
Código
  1. scanf("%i/%i/%i", dia,mes,ano);
Prueba.

Sinó, puedes leer la cadena entera, e ir separándola.


Título: Re: nivel 0 programa 2 cambio de formato a una fecha
Publicado por: _OLAYA_ en 19 Septiembre 2015, 13:23 pm
Gracias a tu respuesta he buscado la diferencia entre C# y C/C++ que no sabia ni que existia. Estoy en el apartado del foro adecuado porque lo tengo que hacer en C.

Sigo en un mar de dudas

#include <stdio.h>

int main ()
{
    int fecha;

    printf ("Introduce una fecha dd/mm/aaaa: ");

    scanf ("%i/%i/%i", &fecha);  //no se en que momento ni como usar %i/%i/%i

    printf("%i-%i-%i", fecha);


    system ("pause");
    return 0;
}

Como veras no se en que momnto utilizar casi nada jajajaja


Título: Re: nivel 0 programa 2 cambio de formato a una fecha
Publicado por: ivancea96 en 19 Septiembre 2015, 13:37 pm
Para empezar: Una fecha son 3 campos: día, mes y año. Así que necesitaremos 3 variables enteras.

Luego, scanf. "%i" es un entero. Leerá e interpretará como un entero. Al poner las "/", hacemos que lea hasta la barra.

Y a todo esto, al poner códigos, encierralos en las etiquetas GeSHi:

Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5.    int dia, mes, ano;
  6.  
  7.    printf ("Introduce una fecha dd/mm/aaaa: ");
  8.  
  9.    scanf ("%i/%i/%i", &dia, &mes, &ano);  //no se en que momento ni como usar %i/%i/%i
  10.  
  11.    printf("%i-%i-%i", dia, mes, ano%100); // 2015%100 = 15
  12.  
  13.  
  14.    system ("pause");
  15.    return 0;
  16. }


Título: Re: nivel 0 programa 2 cambio de formato a una fecha
Publicado por: _OLAYA_ en 19 Septiembre 2015, 13:48 pm
Muchas gracias. Ahora si lo he entendido. Mil gracias.


Título: Re: nivel 0 programa 2 cambio de formato a una fecha
Publicado por: _OLAYA_ en 19 Septiembre 2015, 14:03 pm
Otra pregunta, si por ejemplo seguimos este caso, en el año pongo 1988 y en vez de querer quedarme con el 88 quiero quedarme con el 19, ¿como lo haría?


Título: Re: nivel 0 programa 2 cambio de formato a una fecha
Publicado por: ivancea96 en 19 Septiembre 2015, 14:10 pm
1998/100 = 19.98. Como las divisiones de enteros no tienen decimales: 1998/100 = 19


Título: Re: nivel 0 programa 2 cambio de formato a una fecha
Publicado por: _OLAYA_ en 19 Septiembre 2015, 14:13 pm
Eficaz y eficiente. Muchas gracias.