Ejercicios Resueltos en Pascal: Matrices, Búsqueda de Elementos y Manejo de Vectores
Enviado por Programa Chuletas y clasificado en Inglés
Escrito el en
español con un tamaño de 5,19 KB
Ejercicios de Programación en Pascal con Matrices y Vectores
A continuación se presentan varios ejercicios resueltos en Pascal que trabajan con matrices, vectores y cadenas de caracteres.
1. Mayor elemento de una matriz
Este programa solicita las dimensiones de una matriz, lee sus elementos y calcula el mayor elemento almacenado.
BEGIN
write('Número de filas de la matriz: ');
readln(nf);
write('Número de columnas de la matriz: ');
readln(nc);
for i:=1 to nf do
for j:=1 to nc do
begin
write('Introduzca el elemento ',i,',',j,': ');
readln(m[i,j]);
end;
mayor:=-maxint;
for i:=1 to nf do
for j:=1 to nc do
if m[i,j]>mayor then mayor:=m[i,j];
writeln;
writeln('La matriz original es: ');
writeln;
for i:=1 to nf do
begin
for j:=1 to nc do
write(m[i,j]:4);
writeln;
writeln;
end;
writeln('El mayor elemento encontrado es el ',mayor);
readln;
readln;
END.La variable mayor se inicializa con -maxint para garantizar que cualquier elemento de la matriz sea mayor que el valor inicial.
2. Comprobar si existen elementos negativos
Este programa determina si la matriz contiene al menos un elemento negativo. Utiliza una estructura repeat-until anidada que se detiene en cuanto encuentra el primer negativo.
Type
matriz = array[1..20,1..20] of integer;
var
m: matriz;
nf, nc, i, j, fila, columna: integer;
haynegativo: boolean;
BEGIN
clrscr;
haynegativo := false;
write('Número de filas de la matriz: ');
readln(nf);
write('Número de columnas de la matriz: ');
readln(nc);
for i:=1 to nf do
for j:=1 to nc do
begin
write('Introduzca el elemento ',i,',',j,': ');
readln(m[i,j]);
end;
fila := 0;
repeat
fila := fila + 1;
columna := 0;
repeat
columna := columna + 1;
if m[fila,columna] < 0 then haynegativo := true;
until (columna = nc) or haynegativo;
until (fila = nf) or haynegativo;
writeln;
writeln('La matriz original es: ');
writeln;
for i:=1 to nf do
begin
for j:=1 to nc do
write(m[i,j]:4);
writeln;
writeln;
end;
if haynegativo then
writeln('Hay al menos un elemento negativo')
else
writeln('No hay negativos');
readln;
readln;
END.3. Contar las apariciones de un carácter en una matriz
Este ejercicio cuenta cuántas veces aparece un carácter introducido por el usuario dentro de una matriz cuadrada.
BEGIN
write('Dimensión de m: ');
readln(dim);
for i:=1 to dim do
for j:=1 to dim do
begin
write('Elemento ',i,',',j,': ');
readln(m[i,j]);
end;
write('Introduce el carácter a buscar: ');
readln(car);
veces := 0;
for i:=1 to dim do
for j:=1 to dim do
if m[i,j] = car then veces := veces + 1;
writeln;
writeln('La matriz original es: ');
writeln;
for i:=1 to dim do
begin
for j:=1 to dim do
write(m[i,j]:4);
writeln;
writeln;
end;
if veces > 0 then
begin
write('El carácter "',car,'" aparece ',veces);
if veces = 1 then write(' vez')
else write(' veces');
end
else
write('El carácter "',car,'" no está en la matriz');
readln;
readln;
END.4. Almacenar en un vector la fila con mayor suma
Este programa recorre cada fila de la matriz, calcula su suma y guarda en un vector la fila que presenta la mayor suma total.
type
matriz = array[1..20,1..20] of integer;
vector = array[1..20] of integer;
var
m: matriz;
v, mv: vector;
i, j, dim, suma, msuma: integer;
BEGIN
write('Dimensión de M: ');
readln(dim);
for i:=1 to dim do
for j:=1 to dim do
begin
write('Elemento ',i,',',j,': ');
readln(m[i,j]);
end;
msuma := -maxint;
for i:=1 to dim do
begin
suma := 0;
for j:=1 to dim do
begin
v[j] := m[i,j];
suma := suma + v[j];
end;
if suma > msuma then
begin
mv := v;
msuma := suma;
end;
end;
writeln('La fila con mayor suma es: ');
writeln;
for i:=1 to dim do
write(mv[i]:5);
readln;
readln;
END.5. Formas circulares de una palabra
Este programa muestra todas las rotaciones circulares de una palabra introducida por el usuario, desplazando sus letras una posición en cada iteración.
type
matriz = array[1..20] of char;
var
v: matriz;
cont, n, i: integer;
begin
write('Introduce cuántas letras tiene la palabra: ');
readln(n);
for i:=1 to n do
begin
write('Introduce la letra número ',i,' de la palabra: ');
readln(v[i]);
end;
cont := 0;
repeat
cont := cont + 1;
for i:=cont to n do
write(v[i]:1);
for i:=1 to cont-1 do
write(v[i]:1);
writeln;
until n = cont;
readln;
readln;
end.