Solución a la Tarea 1: El calendario de la cuenta larga
Hay al menos dos formas de resolver esta tarea. La primera (y la que
casi todos siguieron) fue la vista en clase. Una segunda forma
(mostrada abajo) es la de calcular primero los residuos de las
divisiones entre 20, 18, 20 y 20, respectivamente, para de forma
alternada calcular los valores enteros de las divisiones entre 20, 18,
20 y 20, respectivamente.
#include
<stdio.h>
int main(void)
{
long n, b, k, t, u, d;
scanf("%ld", &n);
d = n % 20;
n = n / 20;
u = n % 18;
n = n / 18;
t = n % 20;
n = n / 20;
k = n % 20;
b = n / 20;
printf("%ld %ld %ld %ld
%ld\n", b, k, t, u, d);
return 0;
}
Los valores de entrada y salida empleados para la evaluación
fueron los siguientes:
Entrada
Salida
314159265 2181
13 4 11 5
31415926 218 3 6 8 6
3141592 21 16 6 11 12
314159 2 3 12 11 19
31415 0 4 7 4 15
3141 0 0 8 13 1
314 0 0 0
15 14
31 0
0 0 1 11
3
0 0 0 0 3
1314159265 9126 2 2 7 5
Para probar su tarea en UNIX, escriban la instrucción gcc clargaNN.c -o clarga para
compilar su programa, y la instrucción ./clarga 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) Todo tipo
de conversiones mal hechas.
(d) Aunque no es un error, lo mejor era usar enteros para las
operaciones, pues los cálculos con flotantes son inexactos.
Además, les recuerdo que
sólo deben enviar el archivo .c y que éste debe tener el
nombre correcto.