Test Foro de elhacker.net SMF 2.1

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


#include <stdio.h>

int main ()
{
    int dia, mes, ano;

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

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

    printf("%i-%i-%i", dia, mes, ano%100); // 2015%100 = 15


    system ("pause");
    return 0;
}
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.