Introducción:
Hola amigos, tenia pendiente hacer un post sobre matrices…y ahora que termine un programita que estaba haciendo (kuuby), decidí descansar un poco escribiendo sobre la matriz triangular superior; pero bueno basta de cháchara y mejor empecemos.
Para generar una matriz triangular superior debemos comenzar por identificar en que caso debemos colocar ‘0’ en la matriz.
Vamos a suponer que tenemos una matriz ‘A’ de 3×3 como la que hay en la imagen.
Ahora que tenemos la matriz podemos marcar las posiciones que tendrán como valor ‘0’.
Como podemos observar, solo cuando la posición de la fila sea mayor que el de la columna debemos insertar ‘0’.
Ahora solo debemos recorrer la matriz comenzando por la fila 0 y recorriendo todas las columnas hasta llegar a la ultima columna. No olvidemos que cuando avanza hacia otra posición de la matriz debemos preguntar, si la fila es mayor que la columna.
Cuando terminamos de recorrer todas las columnas avanzamos a la siguiente fila y repetimos hasta llegar a la ultima fila y ultima columna.
Como ya tenemos la idea, sobre como generar una matriz triangular superior, veamos ahora el pseudocódigo.
Variables del pseudocódigo:
- A: Nombre de la matriz que creamos.
- fila: Cantidad de filas que tendrá la matriz al ser creada.
- columna: Cantidad de columnas que tendrá la matriz al ser creada.
- serie: Variable que incrementa de 1 en 1 para generar la secuencia.
- filita: Es el subíndice que indica, en que fila de la matriz nos encontramos.
- columnita: Es el subíndice que indica, en que columna de la matriz nos encontramos.
filita empieza en 0 columnita empieza en 0 serie empieza en 1 mientras filita < fila hacer mientras columnita < columna hacer si columnita < filita entonces Matriz[filita][columnita] = 0 por falso Matriz[filita][columnita] = serie serie incrementa fin de falso columnita incrementa fin de mientras fila incrementa columnita = 0 fin de mientras
Para el código en java y c++ aumentamos una variable.
- contenido: Es la variable en la que vamos concatenando la matriz.
Nota: Una matriz triangular debe ser cuadrada y por ello las variables de fila y columna toman el mismo valor.
Código en java
import java.util.Scanner; import java.util.*; public class TriangularSuperior{ static String Matriz(int Cantidad){ //Creamos la matriz int fila = Cantidad; int columna = Cantidad; int A[][] = new int[fila][columna]; String contenido = ""; //concatenamos la matriz para mostrar en horizontal int serie = 1; int filita = 0; int columnita = 0; while(filita < fila){ while(columnita < columna){ if(columnita < filita){ A[filita][columnita] = 0; contenido = contenido + String.valueOf(A[filita][columnita] + " "); }else{ A[filita][columnita] = serie; contenido = contenido + String.valueOf(A[filita][columnita] + " "); serie++; } columnita++; } contenido = contenido + "\n"; filita++; columnita = 0; } return contenido; } public static void main(String[] args){ Scanner teclado = new Scanner(System.in); System.out.print( "Introduzca el tamaño de la matriz: " ); int tamaño = teclado.nextInt(); //Inserta el valor al parametro y luego muestra el resultado System.out.print(Matriz(tamaño)); } }
Código en c++
#include <iostream> #include<string> using namespace std; int main(){ int fila,columna; int Cantidad; cout << "Introduzca el tamaño de la matriz: "; cin >> Cantidad; fila = Cantidad; columna = Cantidad; //Creamos las matriz int A[fila][columna]; string contenido = "";//concatenar la matriz para mostrar en horizontal int serie = 1; int filita = 0; int columnita = 0; while(filita < fila){ while(columnita < columna){ if(columnita < filita){ A[filita][columnita] = 0; contenido = contenido + to_string(A[filita][columnita]) + " "; }else{ A[filita][columnita] = serie; contenido = contenido + to_string(A[filita][columnita]) + " "; serie++; } columnita++; } contenido = contenido + "\n"; filita++; columnita = 0; } cout << contenido << endl; return 0; }
Nota: El resultado de estas funciones en java y c++ solo pueden ser vistas en terminal o consola, si desean verlo en formulario deberán aumentar lineas de código.
Si encuentras algún error o algún otro detalle que se me hubiera escapado🤯, por favor déjalo en los comentarios, para que pueda corregirlo.
Crees que puedas pasarlo a código en c?
El lenguaje de c es muy similar al de c++, seguro puedes hacerlo tú, ten confianza en ti.
Aun que tal vez lo llegue a hacer no creo que lo haga pronto ya que yo también tengo clases y otras obligaciones (ademas de que soy algo lenta de razonamiento)…