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.