Solución a la Tarea 6: Matrices estocásticas

Para esta tarea se pueden usar algunas modificaciones a funciones que vimos en clase: ya sea para leer una matriz o para imprimir un vector. Sin embargo, se debe tomar en cuenta que lo que queremos hacer aquí no es exactamente igual. Finalmente, en la solución que presento abajo sólo decidí modificar a la función que lee la matriz ¿porqué? Observe que primero completamos los n renglones y luego completamos las n+1 columnas. Finalmente, sólo imprimos los datos de la última columna seguidos de los datos del último renglón.

#include <stdio.h>
 
void lee(int *n, int m[101][101])
{
  int i, j;
 
  scanf("%d", n);
  for (i = 0; i < *n; i++)
    for (j = 0; j < *n; j++)
      scanf("%d", &m[i][j]);
}
 
int main(void)
{
  int n, i, j, s;
  int m[101][101];
 
  lee(&n, m);
  for (i = 0; i < n; i++) {
    for (s = j = 0; j < n; j++)
      s += m[i][j];
    m[i][n] = 100 - s;
  }
  for (j = 0; j <= n; j++) {
    for (s = i = 0; i < n; i++)
      s += m[i][j];
    m[n][j] = 100 - s;
  }
  for (i = 0; i <= n; i++)
    printf("%d ", m[i][n]);
  printf("\n");
  for (j = 0; j <= n; j++)
    printf("%d ", m[n][j]);
  printf("\n");
  return 0;
}


Los valores de entrada y salida empleados para la evaluación fueron los siguientes:

2
31 41
59 26
3
30 1 40
1 90 9
42 6 50
4
62 7 1 8
2 68 1 8
2 8 60 9
1 1 7 63
6
61 4 7 2 5 8
3 66 9 1 2 3
4 5 66 7 8 9
7 4 1 68 5 2
9 6 3 9 60 7
6 5 4 3 2 61
8
71 2 1 2 1 2 1 3
3 63 4 4 3 3 5 4
5 5 55 5 6 7 6 6
7 7 7 47 8 7 7 7
8 9 8 9 39 9 8 9
0 0 9 1 0 60 1 1
2 9 2 2 3 3 63 3
4 4 4 4 4 4 4 64
28 15 57
10 33 57
29 0 2 69
27 3 1 69
22 21 21 28 8
33 16 31 12 8
13 16 1 13 6 19 32
10 10 10 10 18 10 32
17 11 5 3 1 28 13 8 14
0 1 10 26 36 5 5 3 14
3
12 34 50
23 45 10
34 05 21
4
35 2 3 4
5 60 7 8
9 0 70 2
30 4 5 60
5
44 2 3 4 5
6 77 8 9 0
5 4 55 2 1
0 9 8 77 6
1 3 5 7 66
7
61 2 3 4 5 6 7
8 69 0 1 2 3 4
5 6 67 8 9 0 1
2 3 4 65 6 7 8
9 0 1 2 63 4 5
6 7 8 9 0 61 2
3 4 5 6 7 8 59
9
51 2 3 4 5 6 7 8 9
0 51 2 3 4 5 6 7 8
9 0 51 2 3 4 5 6 7
8 9 0 51 2 3 4 5 6
7 8 9 0 51 2 3 4 5
6 7 8 9 0 51 2 3 4
5 6 7 8 9 0 51 2 3
4 5 6 7 8 9 0 51 2
3 4 5 6 7 8 9 0 51
4 22 40 34
31 16 19 34
56 20 19 1 4
21 34 15 26 4
42 0 33 0 18 7
44 5 21 1 22 7
12 13 4 5 16 7 8 35
6 9 12 5 8 11 14 35
5 14 13 12 11 10 9 8 7 11
7 8 9 10 11 12 13 14 5 11

Para probar su tarea en UNIX, escriban la instrucción gcc matestNN.c -o matest para compilar su programa, y la instrucción ./matest para correrlo. Algunos errores comúnes fueron: (a) Al hacer las sumas a partir del segundo renglón o la segunda columna, olvidarse de comenzar desde cero. (b) No calcular bien la entrada inferior derecha. Además, les recuerdo que sólo deben enviar el archivo .c y que éste debe tener el nombre correcto.