Solución a la Tarea 4: Parejas disparejas
Había varias formas de resolver la tarea. En cualquiera de ellas
se necesita un ciclo para calcular los valores de la función
s(n) y una serie de decisiones para decidir el tipo de una pareja. El
uso de funciones en C no es absolutamente necesario, pero el no usarlas
implica que el programa resultante será extremadamente largo, al
tener que realizar las mismas operaciones una tras otra. El siguiente
programa usa dos funciones:
#include
<stdio.h>
int suma(int n)
{
int i, s = 0;
for (i = 1; i < n; i++)
if (n % i == 0)
s += i;
return s;
}
int tipo(int m, int n)
{
int sm, sn;
sm = suma(m);
sn = suma(n);
if (sm == n && sn == m)
return 0;
if (sm <= n && sn <= m)
return 1;
if (sm >= n && sn >= m)
return 2;
return 3;
}
int main(void)
{
int m, n;
scanf("%d%d", &m, &n);
printf("%d %d %d\n", tipo(m,n), tipo(m,m), tipo(n,n));
return 0;
}
Los valores de entrada y salida empleados para la evaluación
fueron los siguientes:
Entrada Salida
1 1 1 1 1
6 6 0 0 0
9 9 1 1 1
12 12 2 2 2
6 12 3 0 2
9 6 1 1 0
9 12 3 1 2
10 100 3 1 2
100 220 3 2 2
220 284 0 2 1
Para probar su tarea en UNIX, escriban la instrucción gcc parejaNN.c -o pareja para
compilar su programa, y la instrucción ./pareja para correrlo.
Algunos errores comúnes fueron: (a) Aunque no es necesariamente
un error, lo mejor era usar funciones. (b) Algunos calcularon la
función s(n) mal, por ejemplo, sumaron también el valor
de n. (c) Algunos decidieron el tipo de la pareja incorrectamente. (d)
Al menos un programa a veces sacaba tres valores, a veces dos, a veces
uno y a veces ninguno a la salida.