nivel 0 programa 2 cambio de formato a una fecha

Iniciado por _OLAYA_, 19 Septiembre 2015, 12:15 PM

0 Miembros y 1 Visitante están viendo este tema.

_OLAYA_

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


ivancea96

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.

_OLAYA_

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


ivancea96

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

_OLAYA_

#4
Muchas gracias. Ahora si lo he entendido. Mil gracias.


_OLAYA_

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?


ivancea96

1998/100 = 19.98. Como las divisiones de enteros no tienen decimales: 1998/100 = 19

_OLAYA_