DeberesPascal/ejercicio3.pas

166 lines
5.0 KiB
Plaintext

uses sysutils,crt;
const
CATEGORIAS : array[0..3] of string = (
'Junior', 'Senior',
'Rockstar', 'Mentor'
);
NUMERO_OBREROS : int64 = 5;
OBREROS : array[0..9] of string = (
'Carla', 'Daniela', 'Lorena',
'Awen', 'Sinno', 'Xiao', 'Josefina',
'Mercedes', 'Maria', 'Ainnoha'
);
DIAS_DE_LA_SEMANA : array[0..5] of string = (
'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado'
);
type
ArrayHorasObrero = array[0..5] of int64;
ArrayHorasObreros = array of ArrayHorasObrero;
EnroqueArray = array of int64;
PagoPorCategoria = array[0..3] of double;
function GenerarEnroque(): EnroqueArray;
var
i : int64;
begin
SetLength(GenerarEnroque, NUMERO_OBREROS);
for i := 0 to Length(GenerarEnroque) do
GenerarEnroque[i] := Random(4) + 1;
end;
function GenerarHorasObreros(): ArrayHorasObreros;
var
i,j : int64;
begin
SetLength(GenerarHorasObreros, NUMERO_OBREROS);
for i := 0 to Length(GenerarHorasObreros) - 1 do
begin
for j := 0 to Length(GenerarHorasObreros[i]) - 1 do
begin
if j = 6 then
GenerarHorasObreros[i][j] := Random(6)
else
GenerarHorasObreros[i][j] := Random(9);
end;
end;
end;
function GenerarPagoPorCategoria(): PagoPorCategoria;
var
i : int64;
begin
for i := 0 to Length(GenerarPagoPorCategoria) - 1 do
GenerarPagoPorCategoria[i] := Random() * 1000;
end;
procedure PintarResultado(
enroque: EnroqueArray;
array_horas_obreros: ArrayHorasObreros;
pago_por_categoria: PagoPorCategoria
);
var
i,j : int64;
total_horas_obrero : double;
horas_por_dia_de_la_semana : array[1..6] of double;
dia_mas_trabajado, dia_menos_trabajado : int64;
total_pagado : double = 0;
begin
for i := 0 to Length(horas_por_dia_de_la_semana) - 1 do
horas_por_dia_de_la_semana[i] := 0;
writeln('Horas trabajadas obreros.');
writeln('-------------------');
writeln('');
write('Nombre Obrero ');
for i := 0 to Length(DIAS_DE_LA_SEMANA) - 1 do
write(DIAS_DE_LA_SEMANA[i] + ' ');
write('Total Obrero ');
write('Categoría ');
write('Monto a cancelar');
writeln('');
for i := 0 to Length(array_horas_obreros) - 1 do
begin
write(OBREROS[i] + ' ');
total_horas_obrero := 0;
for j := 0 to Length(array_horas_obreros[i]) - 1 do
begin
if j = 5 then
begin
total_horas_obrero += (array_horas_obreros[i][j] * 1.55);
horas_por_dia_de_la_semana[j] += array_horas_obreros[i][j] * 1.55;
end else begin
total_horas_obrero += array_horas_obreros[i][j];
horas_por_dia_de_la_semana[j] += array_horas_obreros[i][j];
end;
write(array_horas_obreros[i][j]); write(' ');
end;
write(CATEGORIAS[enroque[i]] + ' ');
write((total_horas_obrero * pago_por_categoria[enroque[i]]):8:2); write(' ');
total_pagado += total_horas_obrero * pago_por_categoria[enroque[i]];
writeln(' ');
end;
write('Total día ');
for i := 0 to Length(horas_por_dia_de_la_semana) - 1 do
begin
write(horas_por_dia_de_la_semana[i]:8:2); write(' ');
end;
writeln(' ');
writeln(' ');
writeln('Tabla Categorias.');
writeln('-------------');
writeln('');
write('CATEGORÍA ');
for i := 0 to Length(CATEGORIAS) - 1 do
write(CATEGORIAS[i] + ' ');
writeln(' ');
write('(PAGO UM) ');
for i := 0 to Length(pago_por_categoria) - 1 do
begin
write(pago_por_categoria[i]:8:2); write(' ');
end;
writeln(' ');
writeln(' ');
dia_mas_trabajado := 1;
dia_menos_trabajado := 1;
for i := 0 to Length(horas_por_dia_de_la_semana) - 1 do
begin
write(horas_por_dia_de_la_semana[dia_mas_trabajado]:8:2); write(' ');
write(horas_por_dia_de_la_semana[dia_menos_trabajado]:8:2); write(' ');
write(horas_por_dia_de_la_semana[i]:8:2); write(' ');
writeln('');
if horas_por_dia_de_la_semana[dia_mas_trabajado] < horas_por_dia_de_la_semana[i] then
dia_mas_trabajado := i;
if horas_por_dia_de_la_semana[dia_menos_trabajado] > horas_por_dia_de_la_semana[i] then
dia_menos_trabajado := i;
end;
writeln('El día mas trabajado es ' + DIAS_DE_LA_SEMANA[dia_mas_trabajado]);
writeln('El día menos trabajado es ' + DIAS_DE_LA_SEMANA[dia_menos_trabajado]);
write('El total pagado es ');
writeln(total_pagado:8:2);
end;
var
enroque : EnroqueArray;
array_horas_obreros : ArrayHorasObreros;
pago_por_categoria : PagoPorCategoria;
begin
ClrScr;
Randomize;
enroque := GenerarEnroque();
array_horas_obreros := GenerarHorasObreros();
pago_por_categoria := GenerarPagoPorCategoria();
PintarResultado(enroque, array_horas_obreros, pago_por_categoria);
ReadKey;
end.