Array – Ejemplo 4

Enunciado

Escribir un procedimiento que, dada una matriz de nxn de caracteres blancos, remplace por asteriscos las posiciones de la diagonal principal y la triangular inferior correspondiente, siguiendo el recorrido que comienza en la posición 1, 1 y luego recorre las diagonales paralelas a la principal. Escribir un pequeño programa de prueba.

Código

Python

def TRIANGULAR ( m, n ):
    for k in range( n ):
        i = k
        for j in range( n-k ):
            m [i][j] = '*'
            i += 1   
    return m

def main():
    while True:
        n = int( input( "Ingresar/Enter dimension: " ) ) ;
        m = []
        for i in range( n ):
            m.append( [""] * n )
                
        TRIANGULAR ( m , n )
        
        print( "\n" )
        for i in range ( n ):
            for j in range ( n ):
                print(str(m[i][j]).rjust(3), end="")
            print("\n")
        
        resp = input("Presionar S para salir/Press S to exit ").upper()
        if resp == "S": break
main()

C++

#include <iostream>
#include <iomanip>
using namespace std ;
#include <conio.h>

void TRIANGULAR ( char m [][10], int n )
{
    int k , i , j ;

    for( k=0 ; k<n ; k++ )
    {
   	i = k ;
      	for( j=0 ; j<n+1-k ; j++ )
   	{
            m [i][j] = '*' ;
            i++ ;
       	}
    }
}

int main()
{
    char m[10][10] ;
    int n , i , j ;

    do
    {
   	cout << "Ingresar/Enter dimension: " ; 
	cin >> n ;
      	for( i=0 ; i<n ; i++ )
            for( j=0 ; j<n ; j++ )
                m [i][j] = ' ' ;

      	TRIANGULAR ( m , n ) ;

      	for( i=0 ; i<n ; i++ )
      	{
      	    for( j=0 ; j<n ; j++ )
         	cout << setw(5) << m [i][j] ;
            cout << endl ;
      	}
   	cout << endl << "Presionar ESC para salir/" ;
	cout << "Press ESC to exit" << endl << endl ;
    }
    while (getch() != char (27) ) ;
    return 0 ;
}

Pascal

Program Problema15_15 ;
uses CRT , PRINTER ;
type
    dim = 1..50 ;
    matriz = array[ dim , dim ] of  char ;
var
    m : matriz ;
    n , i , j : dim ;

Procedure TRIANGULAR( var m : matriz ; n : dim ) ;
var k , i , j : dim ;

begin
    for k := 1 to n do
    begin
        i := k ;
        for j := 1 to n + 1 - k do
        begin
            m [ i , j ] := '*' ;
            i := i + 1
        end
    end
end;

begin
    repeat
        ClrScr ;
        write( 'Ingresar/Enter dimension: ' ) ; 
        readln ( n ) ;
        for i := 1 to n do
	   for j := 1 to n do
	      m [ i , j ] := ' ' ;

        TRIANGULAR ( m , n ) ;

        for i := 1 to n do
        begin
            for j := 1 to n do
		write ( m [ i , j ] ) ;
             writeln
        end ;
        writeln ;
	write( 'Presionar ESC para salir/' ) ;
	writeln( 'Press ESC to exit ' ) ;
    until ReadKey = #27
end.

Diagramas

Subprograma

Programa Principal