Programa que opera con matriz

De Ejercicios

Contenido

Enunciado

Suponemos una matriz MxN elementos, la cual se ha rellenado con reales exceptuando la última fila y la última columna. Realizar un programa en el que se ofrezca un menú con las siguientes opciones:

  1. Dados los índices de dos filas intercambiar dichas filas en la matriz.
  2. Dado un entero que representa un código de operación (0 suma, 1 producto), realizar la operación que representa con cada fila de la matriz, poniendo el resultado en la última columna. Igual para las columnas poniendo el resultado en la última fila.
  3. En el elemento de la última fila y la última columna poner el resultado de sumar todos los elementos de la matriz.

Soluciones

Pseudocódigo

Apartado 1

Procedimiento IntercambiaFilas (Var A, m, n, fila1, fila2)
Entradas:
   A: Array (1..1000,1..1000) de Reales  (matriz que queremos modificar)
   m, n: Enteros                         (número de filas y columnas de la matriz )
   fila1, fila2: Enteros                 (filas que queremos intercambiar)
Salidas:
   A: Array (1..1000,1..1000) de Reales  (matriz modificada)
Variables:
   aux: Real
   i, j: Enteros
Inicio
   Para i <--1 hasta m hacer
        aux <-- A(fila1,i)
        A(fila1,i) <-- A(fila2,i)
        A(fila2,i) <-- aux
   Fin_Para
Fin

Apartado 2

Procedimiento SumaProducto (Var A, m, n, ope)
Entradas:
   A: Array (1..1000,1..1000) de Reales  (Matriz que solo rellenamos hasta m-1 y n-1)
   m, n: Enteros                         (número de filas y columnas)
   ope: Entero                           (operador, 0 para sumar y 1 para multiplicar)
Salidas:
   A: Array (1..1000,1..1000) de Reales  (matriz con última fila y columna rellena según la operación dada)
Variables:
   i, j: Enteros
   aux: Real 
Inicio
   (Sumar filas y columnas)
   Si ( ope = 0 ) Entonces 
      (Sumar filas)
      Para i <-- 1 hasta ( m – 1 ) hacer
         aux <-- 0
         Para j <-- 1 hasta ( n – 1 ) hacer
            aux <-- aux + A(i,j)
         Fin_Para
         A(i,n) <-- aux
      Fin_Para
      (Sumar columnas)
      Para i <-- 1 hasta ( n – 1 ) hacer
         aux <-- 0
         Para j <-- 1 hasta ( m – 1 ) hacer
            aux <-- aux + A(j,i)
         Fin_Para
         A(m,i) <-- aux
      Fin_Para
   Fin_Si
   (Multiplicar filas y columnas)
   Si ( ope = 1 ) Entonces 
     (Multiplicar filas)
      Para i <-- 1 hasta ( m – 1 ) hacer
         aux <-- 1
         Para j <-- 1 hasta ( n – 1 ) hacer
            aux <-- aux * A(i,j)
         Fin_Para
         A(i,n) <-- aux
      Fin_Para
     (Multiplicar columnas)
      Para i <-- 1 hasta ( n – 1 ) hacer
         aux <-- 1
         Para j <-- 1 hasta ( m – 1 ) hacer
            aux <-- aux * A(j,i)
         Fin_Para
         A(m,i) <-- aux
      Fin_Para
   Fin_Si
Fin

Apartado 3

Procedimiento SumaUltimaFilaColumna (Var A, m, n)
Entradas:
   A: Array (1..1000,1..1000) de Reales  (matriz bidimensional)
   m, n: Enteros                         (número de filas y columnas de la matriz)
Salidas:
   A: Array (1..1000,1..1000) de Reales  (la última fila y columna contiene la suma de los elementos de la matriz)
Variables:
   i, j: Enteros
   aux, sum: Reales
Inicio
   sum <-- 0
   A(m,n) <-- 0
   Para i <-- 1 hasta m hacer
      Para j <-- 1 hasta n hacer
         sum <-- sum + A(i,j)
      Fin_Para
   Fin_Para
   A(m,n) <-- sum
Fin

Algoritmo principal

Procedimiento RellenaMatriz (Var A, m, n)
Entradas:
   m, n: Enteros   (número de filas y de columnas de la matriz)
Salidas:
   A: Array (1..1000,1..1000) de Reales  (matriz bidimensional)
Variables:
   i, j: Enteros
   b: Real
Inicio
   Para i <-- 1 hasta m hacer                      
      Para j <-- 1 hasta n hacer
         Escribir "Introduzca el elemento ",i," , ",j," de la matriz: "
         Leer A(i,j)
      Fin_Para
   Fin_Para
Fin
Procedimiento MuestraMatriz (A, m, n)
Entradas:
   A: Array (1..1000,1..1000) de Reales  (matriz bidimensional)
   m, n: Enteros  (número de filas y de columnas de la matriz)
Salidas:
   (Muestra al usuario el contenido de la matriz)
Variables:
   i, j: Enteros
   b: Real
Inicio
   Para i <-- 1 hasta m hacer
      Para j <-- 1 hasta n hacer
         Escribir "Elemento ",i," , ",j,": ", A(i,j)
      Fin_Para
   Fin_Para
Fin
Algoritmo Matrices
Entradas:
   matriz: Array (1..1000,1..1000) de Reales  (matriz bidimensional)
   filas, columnas: Enteros                   (número de filas y columnas de la matriz)
Salidas:
   matriz: Array (1..1000,1..1000) de Reales  (matriz modificada)
Variables:
   f1, f2, opcion: Enteros
Inicio
   opcion <--1 
   Mientras ( opcion = 0 ) hacer
      (Mostrar menú al usuario)
      Escribir " 1. para lectura de la matriz "
      Escribir " 2. para intercambiar filas de la matriz "
      Escribir " 3. para sumar filas y columnas de la matriz "
      Escribir " 4. para multiplicar filas y columnas de la matriz "
      Escribir " 5. pata sumar todos los elementos de la matriz "
      Escribir " 0. para salir "
      Leer opcion 

      (Realizar acción según la opción elegida)
      En Caso De Que opcion Valga
         1: (Leer la matriz)
            Escribir " Introduzca numero de filas y de columnas "
            Leer filas, columnas
            RellenaMatriz (matriz, filas, columnas)

         2: (Intercambiar filas)
            Escribir " Introduce filas que quieres intercambiar "
            Leer f1, f2
            IntercambiaFilas (matriz, filas, columnas, f1,f2)
            MuestraMatriz (matriz, filas, columnas)

         3: (Sumar filas y columnas)
            SumaProducto (matriz, filas, columnas, 0)
            MuestraMatriz (matriz, filas, columnas)

         4: (Multiplicar filas y columnas)
            SumaProducto (matriz, filas, columnas, 1)
            MuestraMatriz (matriz, filas, columnas)

         5: (Sumar todos los elementos de la matriz)
            SumaUltimaFilaColumna (matriz, filas, columnas)
            MuestraMatriz (matriz, filas, columnas)

         0: (Salir del programa)
            Escribir "Gracias por utilizar este programa. Adios"

         En otro caso:
            Escribir " Opción no válida. Pulse una opción entre 0 y 5 "
       Fin_Casos
    Fin_Mientras
Fin
Tipos de soluciones