• Lenguaje

    Pascal

  • Descripción

    La empresa INNOVA School paga a sus docentes por el servicio de enseñanza un sueldo mensual de acuerdo a su condición de trabajo (contratado, estable) y además si tiene maestría y doctorado de acuerdo a la siguiente tabla:
    Sin grado | Maestría | Doctorado
    Estable | 2000 | 3000 | 4000
    Contratado | 1000 | 2000 | 3000

    La institución tiene como política de dar un bono en función al sueldo bruto de aquellos docentes estables en función al número de hijos que tiene, a continuación, vamos a mostrarles una tabla con el resumen de porcentaje de bonos.
    Número de hijos | % bono
    1 a 2 | 10_%
    3 a 5 | 15%
    6 a mas | 20%

    Además, a todos los empleados se les descuenta el 6% de sus ingresos (sueldo bruto mensual y bono) por concepto de AFP.
    Desarrollar el algoritmo que permita calcular el sueldo neto a recibir por un docente, correspondiente a un mes determinado.

    a. Cálculo del sueldo bruto mensual.
    b. Cálculo del bono.
    c. Cálculo del sueldo neto mensual de un docente.

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
program EmpresaInnovaSchool;
uses crt;

var condicion_de_trabajo, grado : integer;
var AFP, bono, numero_de_hijos, sueldo_bruto_mensual, sueldo_neto_mensual : real;
var tecla_repetir : char;
begin
    repeat
        clrscr;
        write ('Ingresa el valor de numero de hijos: ');
        readln (numero_de_hijos);
        writeln ('Selecciona el valor de condicion de trabajo.');
        writeln ('    1.- Estable');
        writeln ('    2.- Contratado');
        write ('    : ');
        repeat
            readln (condicion_de_trabajo);
            if (condicion_de_trabajo<1) or (condicion_de_trabajo>2) then
                write ('Valor incorrecto. Ingr'#130'salo nuevamente.: ');
        until (condicion_de_trabajo>=1) and (condicion_de_trabajo<=2);
        writeln ('Selecciona el valor de grado.');
        writeln ('    1.- Sin grado');
        writeln ('    2.- Maestr'#161'a');
        writeln ('    3.- Doctorado');
        write ('    : ');
        repeat
            readln (grado);
            if (grado<1) or (grado>3) then
                write ('Valor incorrecto. Ingr'#130'salo nuevamente.: ');
        until (grado>=1) and (grado<=3);
        sueldo_bruto_mensual := 0;
        if (condicion_de_trabajo=1) and (grado=1) then
            begin
                sueldo_bruto_mensual := 2000;
            end;
        if (condicion_de_trabajo=1) and (grado=2) then
            begin
                sueldo_bruto_mensual := 3000;
            end;
        if (condicion_de_trabajo=1) and (grado=3) then
            begin
                sueldo_bruto_mensual := 4000;
            end;
        if (condicion_de_trabajo=2) and (grado=1) then
            begin
                sueldo_bruto_mensual := 1000;
            end;
        if (condicion_de_trabajo=2) and (grado=2) then
            begin
                sueldo_bruto_mensual := 2000;
            end;
        if (condicion_de_trabajo=2) and (grado=3) then
            begin
                sueldo_bruto_mensual := 3000;
            end;
        bono := 0;
        if (numero_de_hijos>=1) and (numero_de_hijos<3) then
            begin
                bono := sueldo_bruto_mensual*0.1;
            end;
        if (numero_de_hijos>=3) and (numero_de_hijos<6) then
            begin
                bono := sueldo_bruto_mensual*0.15;
            end;
        if numero_de_hijos>=6 then
            begin
                bono := sueldo_bruto_mensual*0.2;
            end;
        AFP := (sueldo_bruto_mensual+bono)*0.06;
        sueldo_neto_mensual := sueldo_bruto_mensual+bono-AFP;
        writeln ('Valor de AFP: ', AFP:0:6);
        writeln ('Valor de bono: ', bono:0:6);
        writeln ('Valor de sueldo bruto mensual: ', sueldo_bruto_mensual:0:6);
        writeln ('Valor de sueldo neto mensual: ', sueldo_neto_mensual: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');
end.