Introducción a la Programación
Trimestre 2004 Otoño --- Tarea 6

Miércoles 24 de Noviembre de 2004 a las 14:30 hrs

Matrices estocásticas

Una matriz cuadrada se dice estocástica si las sumas de todos los elementos de cada renglón y las sumas de todos los elementos de cada columna son iguales. Normalmente, todas esas sumas deben ser iguales a 1, pero en esta tarea supondremos que todas las sumas deben ser iguales a 100. Por ejemplo, la matriz de 2x2 cuyos dos renglones son (31, 41) y (59, 26) no es estocástica, pero la matriz de 3x3 cuyos tres renglones son (31, 41, 28), (59, 26, 15) y (10, 33, 57) sí es estocástica. Más aún, observe que la segunda matriz se obtuvo de la primera completando cada renglón por la derecha y cada columna por abajo de modo que todas las sumas fueran iguales a 100. Dado un entero n y una matriz de n por n, escriba un programa que obtenga una matriz de n+1 por n+1 que sea estocástica.

Especificación

La entrada consiste de un número entero n, que tendrá un valor entre 1 y 100, seguido de n renglones, cada uno de ellos con n números enteros entre 0 y 100. Todas las sumas de renglones y columnas de esta matriz serán menores o iguales a 100. La salida consiste de dos renglones, cada uno de ellos con n + 1 números enteros separados por espacios. El primer renglón de la salida debe ser la columna que se agregó a la derecha de la matriz de entrada y el segundo renglón de la salida debe ser el renglón que se agregó abajo de la matriz de entrada. El nombre de tu programa deberá ser matestNN.c, donde NN es el número de equipo que les fue asignado. Los archivos matestNN.o y matestNN.exe no deben ser entregados. Notas: (a) Su programa no deberá leer ni escribir nada además de los datos mencionados. (b) Su programa no deberá usar nada que no hayamos visto en clase. (c) Para compilar su programa en UNIX usen la instrucción gcc matestNN.c -o matest y para probarlo usen la instrucción ./matest y tecleen la entrada deseada seguida de un enter.

Ejemplo

ENTRADA:   SALIDA:
2          28 15 57
31 41      10 33 57
59 26