Dependiendo de la complejidad del problema podemos necesitar el empleo de vectores y matrices paralelos.
Se tiene la siguiente información:
· Nombres de 4 empleados.
· Ingresos en concepto de sueldo, cobrado por cada empleado, en los últimos 3 meses.
Confeccionar el programa para:
a) Realizar la carga de la información mencionada.
b) Generar un vector que contenga el ingreso acumulado en sueldos en los últimos 3 meses para cada empleado.
c) Mostrar por pantalla el total pagado en sueldos a todos los empleados en los últimos 3 meses
d) Obtener el nombre del empleado que tuvo el mayor ingreso acumulado
program Proyecto81;
{$APPTYPE CONSOLE}
type
TEmpleados = array[1..4] of String;
TSueldos = array[1..4,1..3] of Double;
TSueldosTot = array[1..4] of Double;
var
Empleados: TEmpleados;
Sueldos: TSueldos;
SueldosTot: TSueldosTot;
f, c: Integer;
suma: Double;
may: Double;
nom: String;
begin
for f:=1 to 4 do
begin
Write('Ingrese el nombre del empleado:');
ReadLn(Empleados[f]);
for c:=1 to 3 do
begin
Write('Ingrese sueldo:');
ReadLn(Sueldos[f,c]);
end;
end;
for f:=1 to 4 do
begin
suma := 0;
for c:=1 to 3 do
begin
suma := suma + sueldos[f,c];
end;
SueldosTot[f] := suma;
end;
WriteLn('Total de sueldos pagados por empleado.');
for f:=1 to 4 do
begin
WriteLn(Empleados[f], ' ', SueldosTot[f]:0:2);
end;
may := SueldosTot[1];
nom := Empleados[1];
for f:= 2 to 4 do
begin
if SueldosTot[f] > may then
begin
may := SueldosTot[f];
nom := Empleados[f];
end;
end;
WriteLn('El empleado con mayor sueldo es ', nom, ' que tiene un sueldo de ',may:0:2);
ReadLn;
end.
Para resolver este problema lo primero que hacemos es declarar y definir una matriz donde se almacenarán los sueldos mensuales de cada empleado, un vector de tipo String donde almacenaremos los nombre de cada empleado y finalmente definimos un vector paralelo a la matriz donde almacenaremos la suma de cada fila de la matriz:
type TEmpleados = array[1..4] of String; TSueldos = array[1..4,1..3] of Double; TSueldosTot = array[1..4] of Double; var Empleados: TEmpleados; Sueldos: TSueldos; SueldosTot: TSueldosTot;
En la carga de datos procedemos a ingresar el nombre de un empleado y luego mediante un for anidado cargamos los tres sueldos de dicho empleado:
for f:=1 to 4 do
begin
Write('Ingrese el nombre del empleado:');
ReadLn(Empleados[f]);
for c:=1 to 3 do
begin
Write('Ingrese sueldo:');
ReadLn(Sueldos[f,c]);
end;
end;
El algoritmo para sumar los sueldos de cada empleado y su posterior almacenamiento en un vector paralelo:
for f:=1 to 4 do
begin
suma := 0;
for c:=1 to 3 do
begin
suma := suma + sueldos[f,c];
end;
SueldosTot[f] := suma;
end;
Mostramos seguidamente el nombre de cada empleado y el total de sueldos ganados en los últimos tres meses:
WriteLn('Total de sueldos pagados por empleado.');
for f:=1 to 4 do
begin
WriteLn(Empleados[f], ' ', SueldosTot[f]:0:2);
end;
Por último para obtener el nombre del empleado con mayor sueldo acumulado debemos inicializar dos variables auxiliares con el primer elemento del vector de empleados y en otra auxiliar guardamos la primer componente del vector SueldosTot:
may := SueldosTot[1];
nom := Empleados[1];
for f:= 2 to 4 do
begin
if SueldosTot[f] > may then
begin
may := SueldosTot[f];
nom := Empleados[f];
end;
end;
WriteLn('El empleado con mayor sueldo es ', nom, ' que tiene un sueldo de ',may:0:2);
program Proyecto82;
{$APPTYPE CONSOLE}
type
TPaises = array [1..4] of String;
TTempMensual = array[1..4,1..3] of Integer;
TTempTrimestral = array[1..4] of Integer;
var
Paises: TPaises;
TempMensual: TTempMensual;
TempTrimestral: TTempTrimestral;
f, c: Integer;
suma: Integer;
may: Integer;
nom: String;
begin
for f:=1 to 4 do
begin
Write('Ingrese el nombre del país:');
ReadLn(Paises[f]);
for c:=1 to 3 do
begin
Write('Ingrese temperatura mensual:');
ReadLn(TempMensual[f,c]);
end;
end;
WriteLn('Listado de templeraturas mensuales');
for f:=1 to 4 do
begin
Write('Pais:', Paises[f], ' ');
for c:=1 to 3 do
begin
Write(TempMensual[f,c], ' ');
end;
WriteLn;
end;
for f:=1 to 4 do
begin
suma := 0;
for c:=1 to 3 do
begin
suma := suma + TempMensual[f,c];
end;
TempTrimestral[f] := suma div 3;
end;
WriteLn('Temperaturas trimestrales');
for f:=1 to 4 do
begin
WriteLn(Paises[f],' ', TempTrimestral[f]);
end;
may := TempTrimestral[1];
nom := paises[1];
for f:=2 to 4 do
begin
if TempTrimestral[f] > may then
begin
may := TempTrimestral[f];
nom := Paises[f];
end;
end;
Writeln('País con temperatura trimestral mayor es ', nom, ' que tiene una temperatura de ', may);
ReadLn;
end.