Es una actividad común la búsqueda del mayor y menor elemento de un vector, lo mismo que su posición.
Confeccionar un programa que permita cargar los nombres de 5 operarios y sus sueldos respectivos. Mostrar el sueldo mayor y el nombre del operario.
Definir dos vectores paralelos para almacenar los nombres de los operarios y sus sueldos.
Si se cargan los valores indicados en el gráfico debería aparecer en pantalla que:
Luis tiene el mayor sueldo y es de 820 pesos.
program Proyecto68; {$APPTYPE CONSOLE} type TNombres = array[1..5] of String; TSueldos = array[1..5] of Double; Var Nombres: TNombres; Sueldos: TSueldos; f: Integer; mayor: Double; posicion: Integer; begin for f:=1 to 5 do begin Write('Ingrese Nombre:'); ReadLn(Nombres[f]); Write('Ingrese Sueldo:'); ReadLn(Sueldos[f]); WriteLn; end; mayor := Sueldos[1]; posicion := 1; for f:=2 to 5 do begin if Sueldos[f] > mayor then begin mayor := sueldos[f]; posicion := f; end; end; WriteLn('Mayor sueldo:', mayor:0:2); WriteLn('Operario :', nombres[posicion]); ReadLn; end.
La carga de los vectores se hace como hemos visto en los ejercicios anteriores.
Para obtener el mayor sueldo y el nombre del operario debemos realizar los siguientes pasos:
Inicializamos la variable "mayor" con la primer componente del vector Sueldos:
mayor := Sueldos[1];
Inicializamos una variable llamada "posición" con el valor 1, ya que decimos primeramente que el mayor es la primer componente del vector:
posicion := 1;
Recorremos las componentes del vector que faltan analizar, o sea, de la 2 a la 5:
for f:=2 to 5 do
Accedemos a cada componente para controlar si supera lo que tiene la variable "mayor":
if sueldos[f] > mayor then
En caso de ser verdadera la condición asignamos a la variable "mayor" este nuevo valor Sueldos[f]
mayor := Sueldos[f];
y a la variable "posicion" le cargamos la variable f que indica la componente que estamos analizando:
posicion := f
Cuando salimos de la estructura repetitiva imprimimos la variable "mayor" que contiene el mayor sueldo.
Para imprimir el nombre del operario conociendo la posición del mayor sueldo imprimimos el elemento que ocupa la posición que indica la variable "posicion" en el vector paralelo:
WriteLn('Operario :', nombres[posicion]);
Para obtener el menor elemento de un vector se realiza el mismo algoritmo, con excepción de la condición que la cambiamos por el operador <.
program Proyecto69; {$APPTYPE CONSOLE} type TVector = array[1..5] of Integer; var Vec: TVector; f: Integer; menor: Integer; repite: Integer; begin for f:=1 to 5 do begin Write('Ingrese elemento:'); ReadLn(Vec[f]); end; menor := Vec[1]; for f:=2 to 5 do begin if Vec[f] < menor then begin menor := Vec[f]; end; end; WriteLn('El elemento menor del vector es:', menor); repite := 0; for f:=1 to 5 do begin if menor = Vec[f] then begin repite := repite + 1; end; end; if repite > 1 then begin WriteLn('El menor se repite dentro del vector'); end else begin WriteLn('El menor no se repite en el vector'); end; ReadLn; end.