Вы находитесь на странице: 1из 4

Paso 1: El programa pide los datos de la matriz número 1 y después los datos de la matriz 2 (entiéndase

por datos # filas y de columnas que conforman las matrices)

Console. WriteLine ( "[Matriz 1]" ) ;


Console. Write ( "Filas: " ) ;
int f1 = int . Parse ( Console. ReadLine ( ) ) ;
Console. Write ( "Columnas: " ) ;
int c1 = int . Parse ( Console. ReadLine ( ) ) ;
Console. WriteLine ( " [Matriz 2]" ) ;
Console. Write ( "Filas: " ) ;
int f2 = int . Parse ( Console. ReadLine ( ) ) ;
Console. Write ( "Columnas: " ) ;
int c2 = int . Parse ( Console. ReadLine ( ) ) ;

Paso 2: Cada dato ha sido almacenado en una variable obteniendo así cuatro variables que serian:

f1= Numero de filas de la matriz 1


c1= Numero de columnas de la matriz 1
f2= Numero de filas de la matriz 2
c2= Numero de columnas de la matriz2

Paso 3: Luego de haber obtenido el número de filas y de columnas de las matrices que se van a
multiplicar se declaran las matrices y se asignan como # de filas y # de columnas las variables
almacenadas anteriormente y se agrega +1 por que más adelante las matrices se llenaran desde la
posición 1 y no desde la 0 como se lo hace comúnmente.
Nota: Se declaran las matrices después de haber obtenido el número de filas y de columnas de cada
matriz porque si se lo hace antes el código generara error ya que se estaría usando variables aun no
declaradas.

int [ , ] Matriz1 = new int [ f1 + 1 , c1 + 1 ] ;


int [ , ] Matriz2 = new int [ f2 + 1 , c2 + 1 ] ;
int [ , ] Multiplicacion = new int [ f1 + 1 , c2 + 1 ] ;

Paso 4: Luego de esto se evalúa una condición que sería: si el número de columnas de la matriz 1 (c1) es
igual al número de filas de la matriz 2 (f2) se ejecutan las sentencias dentro del "ir".

if ( c1 == f2 )
Paso 5: Luego de haberse cumplido la condición el programa muestra un mensaje pidiendo cada
elemento que conformaran cada matriz y los almacena usando la técnica de for anidados esta técnica
funciona de la siguiente manera: el primer for en ejecutarse es el más interno que en este caso será el de
las columnas luego de terminar este pasa al de las filas.

Ej: Usando for anidados si tuviéramos una matriz de 3x3 como la siguiente esta seria llenada comenzando
desde la posicion 1,1 hasta la 1,3 esto seria controlado por el primer for luego de terminar este for se
pasaria al de las filas y comenzaria de nuevo el proceso del for interno de las columnas y se llenaria la
segunda fila desde la posicion 2,1 al 2,3 y luego se llenaria la ultima fila de la misma forma.

Console. WriteLine ( " Datos [Matriz 1]: " ) ;


for ( int i = 1 ; i <= f1 ; i ++ ) {
for ( int j = 1 ; j <= c1 ; j ++ ) {
Console. Write ( "Ingresa Dato (Fila: {0} - Columna: {1}): " , i, j ) ;
Matriz1 [ i, j ] = int . Parse ( Console. ReadLine ( ) ) ; } }

Console. WriteLine ( "Datos [Matriz 2]: " ) ;


for ( int i = 1 ; i <= f2 ; i ++ ) {
for ( int j = 1 ; j <= c2 ; j ++ ) {
Console. Write ( "Ingresa Dato (Fila: {0} - Columna: {1}): " , i, j ) ;
Matriz2 [ i, j ] = int . Parse ( Console. ReadLine ( ) ) ;
}}

Paso 6: Este paso seria el mas importante de todo el programa ya que en este se realizaria todo el
proceso matematico que conlleva la multiplicacion de matrices lo primero que observamos es que se han
usado tres fors anidados esto nos dice que el programa va a necesitar tres movimientos diferentes.
Explicacion por pasos de los tres for anidados

a)Al iniciar por primera vez el bucle de los tres fors los indices i,j,z comienzan en su valor inicial osea 1.

Multiplicacion [ i, j ] = Matriz1 [ i, z ] * Matriz2 [ z, j ] + Multiplicacion [ i, j ] ya reemplazando esto


quedaria asi:
Multiplicacion [ 1, 1 ] = Matriz1 [ 1, 1 ] * Matriz2 [ 1, 1 ] + Multiplicacion [ 1, 1 ]

Luego reemplazando esas coordenadas por los datos de las matrices a multiplicar quedaria asi:

Multiplicacion [ 1, 1 ]=4*5+0
Multiplicacion [ 1, 1 ] =20
Nota: Multiplicacion [ i, j ] es igual a 0 por que antes de entrar al for que contiene el proceso se declaro
en ese valor.

b) Luego de esto se ejecuta el for de z osea el for mas interno y se incrementa la z en 1 osea que ya
valdria 2 y se realiza de nuevo la operacion.

Multiplicacion [ i, j ] = Matriz1 [ i, z ] * Matriz2 [ z, j ] + Multiplicacion [ i, j ] ya reemplazando esto


quedaria asi:
Multiplicacion [ 1, 1 ] = Matriz1 [ 1, 2 ] * Matriz2 [ 2, 1 ] + Multiplicacion [ 1, 1 ]

Luego reemplazando esas coordenadas por los datos de las matrices a multiplicar quedaria asi:
Nota:Ya en este punto Multiplicacion [ i, j ] a acumulado el 20 y ya no vale 0
Multiplicacion [ 1, 1 ]=5*1+20
Multiplicacion [ 1, 1 ] =25
c) Luego de esto se ejecuta el for de z otra vez la z en 1 y ahora vale 3 y se realiza de nuevo la
operacion.

Multiplicacion [ i, j ] = Matriz1 [ i, z ] * Matriz2 [ z, j ] + Multiplicacion [ i, j ] ya reemplazando esto


quedaria asi:
Multiplicacion [ 1, 1 ] = Matriz1 [ 1, 3 ] * Matriz2 [ 3, 1 ] + Multiplicacion [ 1, 1 ]

Luego reemplazando esas coordenadas por los datos de las matrices a multiplicar quedaria asi:
Nota:Ya en este punto Multiplicacion [ i, j ] a acumulado el 25
Multiplicacion [ 1, 1 ]=6*2+25
Multiplicacion [ 1, 1 ] =37
d) Luego de eso z se incrementa otra vez al no cumplir la condicion el bucle de z termina y pasa al for de j
este se incrementa en 1 y entra en el for de "z" que de nuevo empieza en el valor inicial osea 1 luego
llega un punto en el cual "j" ya no cumple la condicion y termina y despues de eso se pasaria al bucle de
"i" y y z se reiniciarian a 1 luego de que "i" no cumpla la condicion terminaria el funcionamiento de los
fors.

for ( int i = 1 ; i <= f1 ; i ++ ) {


for ( int j = 1 ; j <= c2 ; j ++ ) {
Multiplicacion [ i, j ] = 0 ;
for ( int z = 1 ; z <= c1 ; z ++ ) {
Multiplicacion [ i, j ] = Matriz1 [ i, z ] * Matriz2 [ z, j ] + Multiplicacion [ i, j ] ; } } }

Paso 7: Luego de haber obtenido la matriz resultante se la muestra mediante dos for anidados y se usa un
salto de linea al final del primer for para que en pantalla se muestre la matriz en forma ordenada.

Console. WriteLine ( "Multiplicacion de 2 Matrices" ) ;


for ( int i = 1 ; i <= f1 ; i ++ ) {
for ( int j = 1 ; j <= c2 ; j ++ ) {
Console. Write ( "{0} " , Multiplicacion [ i, j ] ) ;
}
Console. WriteLine ( ) ;
}}
Paso 8: Aqui se muestra un mensaje de error al usuario advirtiendole que el numero de columnas de la
matriz 1 no es igual al numero de filas de la matriz 2.
Nota: Este paso solo se ejecutara en caso de no haberse cumplido la condicion del if

Вам также может понравиться