Publicidad

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.

Upper triangular matrix

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.

Filas y columnas de una matriz

Ahora que tenemos la matriz podemos marcar las posiciones que tendrán como valor ‘0’.

Upper triangular matrix explanation

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.

Publicidad

Matriz en c++ ejemplo

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.

Publicidad


Subscribe
Notify of
guest

2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
alex

Crees que puedas pasarlo a código en c?