• Lenguaje

    Pascal

  • Descripción

    La compañía ABC otorga por una sola vez al año, una bonificación a sus empleados. Se requiere determinar la bonificación que un trabajador recibe, si esta se le asigna como un porcentaje de su salario mensual que depende de su antigüedad en la empresa de acuerdo con la siguiente tabla:

    Tiempo | Porcentaje
    Menos de 5 año | 5% del salario
    5 o más años y menos de 10 años | 10% del salario
    10 o más años y menos de 15 años | 15% del salario
    15 o más años y menos de 20 años | 20% del salario
    20 o más años y menos de 25 años | 25% del salario
    25 años o más | 30% del salario

    Además, se desea conocer:
    a. El número de empleados que hay en cada uno de los rangos de tiempo.
    b. El monto total pagado en cada rango de tiempo.
    c. El total de las bonificaciones pagadas a sus empleados.
    d. El porcentaje que representa el número de empleado de cada rango de tiempo respecto al total de empleados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
program BonificacionPorAntiguedad;
uses crt;

var empleados, empleados_en_rango_1, empleados_en_rango_2, empleados_en_rango_3, empleados_en_rango_4 : integer;
var empleados_en_rango_5 : integer;
var antiguedad, bonificacion, empleados_en_rango_6, porcentaje_de_rango_1, porcentaje_de_rango_2 : real;
var porcentaje_de_rango_3, porcentaje_de_rango_4, porcentaje_de_rango_5, salario_mensual, total_de_bonificaciones : real;
var total_pagado_en_rango_1, total_pagado_en_rango_2, total_pagado_en_rango_3, total_pagado_en_rango_4, total_pagado_en_rango_5 : real;
var total_pagado_en_rango_6 : real;
var tecla_repetir : char;
begin
    empleados := 0;
    empleados_en_rango_1 := 0;
    empleados_en_rango_2 := 0;
    empleados_en_rango_3 := 0;
    empleados_en_rango_4 := 0;
    empleados_en_rango_5 := 0;
    porcentaje_de_rango_1 := 0;
    porcentaje_de_rango_2 := 0;
    porcentaje_de_rango_3 := 0;
    porcentaje_de_rango_4 := 0;
    porcentaje_de_rango_5 := 0;
    total_de_bonificaciones := 0;
    total_pagado_en_rango_1 := 0;
    total_pagado_en_rango_2 := 0;
    total_pagado_en_rango_3 := 0;
    total_pagado_en_rango_4 := 0;
    total_pagado_en_rango_5 := 0;
    repeat
        clrscr;
        write ('Ingresa el valor de antiguedad: ');
        readln (antiguedad);
        write ('Ingresa el valor de salario mensual: ');
        readln (salario_mensual);
        bonificacion := 0;
        empleados := empleados+1;
        if antiguedad<5 then
            begin
                bonificacion := salario_mensual*0.05;
                empleados_en_rango_1 := empleados_en_rango_1+1;
                total_pagado_en_rango_1 := total_pagado_en_rango_1+salario_mensual+bonificacion;
            end;
        if (antiguedad>=5) and (antiguedad<10) then
            begin
                bonificacion := salario_mensual*0.1;
                empleados_en_rango_2 := empleados_en_rango_1+1;
                total_pagado_en_rango_2 := total_pagado_en_rango_2+salario_mensual+bonificacion;
            end;
        if (antiguedad>=10) and (antiguedad<15) then
            begin
                bonificacion := salario_mensual*0.15;
                empleados_en_rango_3 := empleados_en_rango_2+1;
                total_pagado_en_rango_3 := total_pagado_en_rango_3+salario_mensual+bonificacion;
            end;
        if (antiguedad>=15) and (antiguedad<20) then
            begin
                bonificacion := salario_mensual*0.2;
                empleados_en_rango_4 := empleados_en_rango_3+1;
                total_pagado_en_rango_4 := total_pagado_en_rango_4+salario_mensual+bonificacion;
            end;
        if (antiguedad>=20) and (antiguedad<25) then
            begin
                bonificacion := salario_mensual*0.25;
                empleados_en_rango_5 := empleados_en_rango_4+1;
                total_pagado_en_rango_5 := total_pagado_en_rango_5+salario_mensual+bonificacion;
            end;
        if antiguedad>=25 then
            begin
                bonificacion := salario_mensual*0.3;
                empleados_en_rango_6 := empleados_en_rango_5+1;
                total_pagado_en_rango_6 := total_pagado_en_rango_6+salario_mensual+bonificacion;
            end;
        total_de_bonificaciones := total_de_bonificaciones+bonificacion;
        writeln ('Valor de bonificacion: ', bonificacion:0:6);
        writeln ('Valor de empleados en rango 6: ', empleados_en_rango_6:0:6);
        writeln ('Valor de total pagado en rango 6: ', total_pagado_en_rango_6:0:6);
        writeln;
        write (#168'Deseas repetir el proceso? (S/N): ');
        repeat
            tecla_repetir := readkey;
        until (tecla_repetir = 's') or (tecla_repetir = 'n') or (tecla_repetir = 'S') or (tecla_repetir = 'N');
    until (tecla_repetir <> 's') and (tecla_repetir <> 'S');
    if empleados = 0 then
        porcentaje_de_rango_1 := 0
    else
        porcentaje_de_rango_1 := 100.0*empleados_en_rango_1/empleados;
    if empleados = 0 then
        porcentaje_de_rango_2 := 0
    else
        porcentaje_de_rango_2 := 100.0*empleados_en_rango_2/empleados;
    if empleados = 0 then
        porcentaje_de_rango_3 := 0
    else
        porcentaje_de_rango_3 := 100.0*empleados_en_rango_3/empleados;
    if empleados = 0 then
        porcentaje_de_rango_4 := 0
    else
        porcentaje_de_rango_4 := 100.0*empleados_en_rango_4/empleados;
    if empleados = 0 then
        porcentaje_de_rango_5 := 0
    else
        porcentaje_de_rango_5 := 100.0*empleados_en_rango_5/empleados;
    writeln ('Valor de empleados: ', empleados);
    writeln ('Valor de empleados en rango 1: ', empleados_en_rango_1);
    writeln ('Valor de empleados en rango 2: ', empleados_en_rango_2);
    writeln ('Valor de empleados en rango 3: ', empleados_en_rango_3);
    writeln ('Valor de empleados en rango 4: ', empleados_en_rango_4);
    writeln ('Valor de empleados en rango 5: ', empleados_en_rango_5);
    writeln ('Valor de porcentaje de rango 1: ', porcentaje_de_rango_1:0:6);
    writeln ('Valor de porcentaje de rango 2: ', porcentaje_de_rango_2:0:6);
    writeln ('Valor de porcentaje de rango 3: ', porcentaje_de_rango_3:0:6);
    writeln ('Valor de porcentaje de rango 4: ', porcentaje_de_rango_4:0:6);
    writeln ('Valor de porcentaje de rango 5: ', porcentaje_de_rango_5:0:6);
    writeln ('Valor de total de bonificaciones: ', total_de_bonificaciones:0:6);
    writeln ('Valor de total pagado en rango 1: ', total_pagado_en_rango_1:0:6);
    writeln ('Valor de total pagado en rango 2: ', total_pagado_en_rango_2:0:6);
    writeln ('Valor de total pagado en rango 3: ', total_pagado_en_rango_3:0:6);
    writeln ('Valor de total pagado en rango 4: ', total_pagado_en_rango_4:0:6);
    writeln ('Valor de total pagado en rango 5: ', total_pagado_en_rango_5:0:6);
    write ('Presiona una tecla para terminar . . . ');
    readkey;
end.