Array – Ejemplo 2

Enunciado

Escribir un procedimiento que dada una matriz cuadrada de caracteres de dimensión n<=10 y una posición ( p , q ) de la matriz, remplace los caracteres de las posiciones paralelas a la diagonal secundaria que pasa por la posición ( p , q ) dada por caracteres c. Escribir un pequeño programa de prueba.

Código

Python

def REMPLAZA( m, n, p1, q1, c ):
    m[p1][q1] = c
    i = p1
    j = q1
    while i<n-1 and j>0:
        i += 1
        j -= 1
        m[i][j] = c

    i = p1
    j = q1
    while i>0 and j<n-1:
        i -= 1
        j += 1
        m[i][j] = c
    
    return m

def main():
    while True:
        n = int( input( "Ingresar/Enter dimension: ") )
        m = []
        for i in range( n ):
            m.append( [""] * n )
        
        print( "Ingresar elementos/Enter element:\n" )
        for i in range ( n ):
            for j in range ( n ):
                m[i][j] = input()
                
        caracter = input( "Ingresar/Enter character:" )
        print( "Ingresar coordenadas/", end="" )
        print( "Enter coordinates: " )
        f, c = int( input( "Fila: " ) ), int( input( "Columna: ") )
        
        REMPLAZA( m, n, f-1, c-1, caracter )
            
        print("\n")
        for i in range ( n ):
            for j in range ( n ):
                print( m[i][j].rjust(3), end="" )
            print( "\n" )
        
        resp = input( "Presionar/Press S to exit " ).upper()
        if resp == "S": break
main()

C++

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

void REMPLAZA( char m[][10], int n, 
	       int p1, int q1, char c )
{
    int i, j ;
    
    m[p1][q1] = c ;
    i = p1; j = q1 ;
    while ( i<n-1 && j>0 )
    {
        i++ ; j-- ;
        m[i][j] = c ;
    }
    i = p1 ; j = q1 ;
    while ( i>0 && j<n-1 )
    {
        i-- ; j++ ;
        m[i][j] = c ;
    }
}

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

    do
    {
        cout << "Ingresar/Enter dimension: " ; 
	cin >> n ;	
	cout << "Ingresar elementos/Enter element:\n" ;
	for( i=0 ; i<n ; i++ )
	    for( j=0 ; j<n ; j++ )
	        cin >> m[i][j] ;
				 
	cout << "Ingresar caracter deseado/" ;
	cout << "Enter desired character: " ; 
	cin >> caracter ;
	cout << "Ingresar coordenadas/" ;
	cout << "Enter coordinates: " ;
	cin >> f >> c ;
	    
	REMPLAZA( m , n , f-1 , c-1 , caracter ) ;
	    
	cout << endl ;
	for( i=0 ; i<n ; i++ )
	{
	    for( j=0 ; j<n ; j++ )
	        cout << setw(5) << m[i][j] ;
	    cout << endl ;
	}
	cout << "\nPresionar ESC para salir/" ;
	cout << " Press ESC to exit\n" ;
    }
    while (getch() != char (27) ) ;
    return 0 ;
}

Pascal

Program Problema15_12 ;
uses CRT , PRINTER ;

const nmax = 10 ;

type
    dim = 1 .. nmax ;
    matriz = array [ dim , dim ] of char ;
var
    m : matriz ;
    n , i , j , f , c : dim ;
    caracter : char ;

Procedure REMPLAZA( var m : matriz ; 
		    n , p1, q1 : dim ; c : char ) ;
var i , j : dim ;
begin
    m[ p1 , q1] := c ;
    i := p1 ; j := q1 ;
    while ( i<n ) and ( j>1 ) do
    begin
        i := i +1 ; j := j - 1 ;
        m[ i , j ] := c
    end ;
    i := p1 ; j := q1;
    while ( i>1 ) and ( j<n ) do
    begin
        i := i - 1 ; j := j + 1 ;
        m[ i , j ] := c
    end
end;

{ Programa Principal de Prueba }

begin
    repeat
        ClrScr ;
	write( 'Ingresar/Enter dimension: ' ) ; 
	readln( n ) ;
	writeln ( 'Ingresar/Enter elements: ' ) ;
	    for i := 1 to n do
	    begin
		for j := 1 to n do
		    readln( m[ i , j] ) ;
	    end ;
	    write( 'Ingresar caracter deseado/' ) ;
	    write( 'Enter desired character: ' ) ; 
	    readln( caracter ) ;
	    write( 'Ingresar coordenadas/' ) ;
	    write( 'Enter coordinates: ' ) ; 
	    readln( f , c ) ;
		
	    Remplaza( m , n , f , c , caracter );
		
	    writeln ;
	    for i := 1 to n do
	    begin
		for j := 1 to n do
		write( m[ i , j ] , '  ' );
		writeln ;
	    end;
		
	    writeln ;
	    writeln( 'Presionar/Press ESC to exit ' ) ;
    until ReadKey=#27
end.

Diagramas

Subprograma

Programa Principal