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


