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.

Entradas relacionadas: