Solución a la Tarea 1: La medida del tiempo
Hay al menos dos formas de resolver esta tarea. En la primera (que es
la que casi todos siguieron) se debe dividir s entre 365*24*60*60 para
calcular a y el residuo de esa división se debe dividir entre
24*60*60 para calcular d y el residuo de esa división se debe
dividir entre 60*60 para calcular h y el residuo de esa división
se debe dividir entre 60 para calcular m y el residuo de esa
división es q.
En la segunda forma, se pueden hacer las operaciones al revés: q
es el residuo de s al dividirlo por 60, m es el residuo de lo que queda
al dividirlo por 60, h es el residuo de lo que queda al dividirlo por
24, d es el residuo de lo que queda al dividirlo por 365 y ésta
última división da el valor de a.
#include
<stdio.h>
int main(void)
{
long s, a, d, h, m, q;
scanf("%ld", &s);
q = s % 60;
s = (s - q) / 60;
m = s % 60;
s = (s - m) / 60;
h = s % 24;
s = (s - h) / 24;
d = s % 365;
a = (s - d) / 365;
printf("%ld %ld %ld %ld
%ld\n", a, d, h, m, q);
return 0;
}
Los valores de entrada y salida empleados para la evaluación
fueron los siguientes:
Entrada
Salida
0
0 0 0 0 0
10
0 0 0 0 10
900 0
0 0 15 0
8000 0 0 2
13 20
70000 0 0 19 26 40
600000 0 6 22 40 0
5000000 0 57 20 53 20
40000000 1 97 23 6 40
300000000 9 187 5 20 0
2000000000 63 153 3 33 20
Para probar su tarea en UNIX, escriban la instrucción gcc tiempoNN.c -o tiempo para
compilar su programa, y la instrucción ./tiempo para correrlo.
Algunos errores comúnes fueron: (a) Leer int como long o
viceversa. (b) Imprimir letreros de cualquier tipo e incluso usar
conio.h, lo cual estaba explícitamente prohibido. (c) Suponer
que no habría más de un año o que s no
sería 0. (d) Todo tipo de conversiones mal hechas.
Además, les recuerdo que
sólo deben enviar el archivo .c y que éste debe tener el
nombre correcto.