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.