Ejercicios

1. Escribe un procedimiento que calcule la suma de dos matrices de dimensiones axb.

Procedimiento sumaMatrices(E m1:matriz, E m2:matriz, E a:entero, E b:entero, S m:matriz)
{Suma las matrices m1 y m2 de dimensiones axb, asignando el resultado a la matriz m}

Variables
    fila,columna:entero;

principio
    para fila:=1 hasta a hacer {para cada fila}
        para columna:=1 hasta b hacer {para cada elemento de la fila}
            m[fila,columna]:=m1[fila,columna]+m2[fila,columna];
        fpara
    fpara
fin

2. Escribe un procedimiento que calcule la traspuesta de una matriz de dimensión nxn

Procedimiento trasponer(E/S m:matriz, E n:entero);
{Traspone la matriz m de dimensión nxn}

MI IDEA

tipos
    mAuxiliar=vector[1..n,1..n] de entero;

variables
    fila, columna: entero;

principio
    para fila:=0 hasta n hacer
        para columna:=0+1 hasta n hacer
            m[columna,fila]:=m1[fila,columna]
        fpara
    fpara
fin

SOLUCIÓN DEL PROFESOR

variables
    fila,columna:entero;

principio
    para fila:=1 hasta N hacer
        {en cada fila considera los elementos situados a la derecha de la diagonal}
        para columna:=fila+1 hasta N hacer
            {permuta cada elemento con su simétrico}
            auxiliar:=m[fila,columna];
            m[fila,columna]:=m[columna,fila];
            m[columna,fila]:=auxiliar;
        fpara
    fpara
fin

3. Escribe un procedimiento que calcule el producto de dos matrices de dimensiones axb y bxc

Procedimiento multiplicarMatrices(E m1:matriz, E m2:matriz, E a:entero, E b:entero, S m:matriz)
{Multiplica las matrices m1 y m2 de dimensiones axb y bxc, asignando el resultado a la matriz m que tendrá una dimensión axc}

variables
    fila,columna,i:entero;

principio
    para fila:=1 hasta c hacer
        {considera cada una de las filas}
        para columna:=1 hasta c hacer
            {multiplica escalarmente la fila por la columna}
            m[fila,columna]:=0.0;
            para i:=1 hasta b hacer
                m[fila,columna]:=m[fila,columna]+m1[fila,i]*m2[i,columna];
            fpara
        fpara
    fpara
fin