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.