Dev - C++ - Elaborar un programa que determine la nómina de dos categorías de trabajadores

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Elaborar un programa que determine la nómina de dos categorías de trabajadores

Publicado por Alexis (1 intervención) el 09/03/2020 23:48:06
Buenas tardes gente, soy nuevo en cuestión a lenguaje C++, actualmente lo estoy cursando en la escuela. Tengo un ejercicio que elaborar, solo que tengo unos errores y la verdad no entiendo en que me equivoque. Según yo, mi error esta a la hora de calcular los sueldos netos de cada trabajador y en el sueldo del trabajador en la categoría B (lo remarque en la ultima imagen).

Si no es mucha molestia, ¿alguien me podría asesorar? Por favor, ya le avance al código pero por más que le intento no puedo solucionarlo, incluso ya vi varios vídeos.

El ejercicio consiste en: Elaborar un programa que determine la nómina de dos categorías de trabajadores (A y B): N trabajadores de categoría A: que se les descuenta 5% de su sueldo si ganan entre 0 y 150 pesos. Se les descuenta 7% si ganan más de 150 pero menos de 300, y 9% si ganan más de 300 pero menos de 450. Los datos son horas trabajadas, sueldo por hora y nombre de cada trabajador. De M trabajadores de categoría B: que se les descuenta 7% de su sueldo si ganan entre 0 y 250 pesos. Se les descuenta 10% si ganan más de 250 pero menos de 500, y 9% si ganan más de 500 pero menos de 650. Los datos son horas trabajadas, sueldo por hora y número de trabajador.

Adjunto imágenes y el código.

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
123
124
125
126
127
128
129
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
 
int main(){
 
    int totalT = 0;
    printf("Ingrese el total de trabajadores Categoria A: ");
    scanf("%d", &totalT);
 
    int i = 0;
    //int n = 0;
    float tem = 0;
    float sueldoTA[totalT];
    float horasTA[totalT];
    float sueTpH[totalT];
    float sueldoNT = 0.0;
    float sueldoBT = 0.0;
    float horasTTA = 0.0;
    float sumaDes = 0.0;
 
    for (i = 0; i <= totalT-1; i++)
    {
        do
        {
            printf("Ingrese el sueldo por hora del tranbajador %d :", i+1);
            scanf("%f", &sueldoTA[i]);
            printf("Ingrese las horas del tranbajador %d :", i+1);
            scanf("%f", &horasTA[i]);
        } while (sueldoTA[i] <= 0 || horasTA[i] < 0);
 
        sueldoBT += sueldoTA[i];
        horasTTA += horasTA[i];
 
        if (sueldoTA[i] <= 150.0)
        {
            tem = (sueldoTA[i] * 5.0 )/ 100.0;
            sueldoTA[i] = (sueldoTA[i] - tem);
 
        }else if (sueldoTA[i] > 150.0 && sueldoTA[i] < 300)
        {
            tem = (sueldoTA[i] * 7.0) / 100.0;
            sueldoTA[i] = (sueldoTA[i] - tem);
 
        }else
        {
            tem = (sueldoTA[i] - 9.0) / 100;
            sueldoTA[i] = (sueldoTA[i] - tem);
        }
 
        sumaDes += tem;
 
        sueTpH[i] = sueldoTA[i] * horasTA[i];
        printf("Sueldo neto de trabajador trabajador es de: %2.2f \n", sueTpH[i]);
    }
 
    for (size_t n = 0; n < totalT-1; n++)
    {
        sueldoNT += sueTpH[n];
    }
 
 
    printf("\nTotal Sueldos Base categoria A: %2.2f\n", sueldoBT);
    printf("Total horas trabajadas categoria A: %2.2f\n", horasTTA);
    printf("Sueldos de descuento categoria A : %2.2f\n", sumaDes);
    printf("Total de sueldos netos categoria A: %2.2f\n\n", sueldoNT);
 
 
    int totalB = 0;
    printf("Ingrese el total de trabajadores Categoria B: ");
    scanf("%d", &totalB);
 
    int j = 0;
    float sueldoTB[totalB];
    float horasTB[totalB];
    float sTpH[totalB];
    sueldoNT = 0;
    sueldoNT = 0.0;
    sueldoBT = 0.0;
    horasTTA = 0.0;
    sumaDes = 0.0;
 
    for (j = 0; j <= totalB-1; j++)
    {
        do
        {
            printf("Ingrese el sueldo por hora del tranbajador %d :", j+1);
            scanf("%f", &sueldoTB[j]);
            printf("Ingrese las horas del tranbajador %d :", j+1);
            scanf("%f", &horasTB[j]);
        } while (sueldoTB <= 0 || horasTB < 0);
 
        sueldoBT += sueldoTB[j];
        horasTTA += horasTB[j];
 
        if (sueldoTB[j] <= 250.0)
        {
            tem = (sueldoTB[j]  - 7.0) / 100.0;
            sueldoTB[j] = (sueldoTB[i] - tem);
 
        }else if (sueldoTB[j] > 250.0 && sueldoTB[j] < 500)
        {
            tem = (sueldoTB[j] * 10.0) / 100;
            sueldoTB[j] = (sueldoTB[j] - tem);
 
        }else
        {
            tem = (sueldoTB[j] * 9.0) / 100;
            sueldoTB[j] = (sueldoTB[j] - tem);
        }
 
        sumaDes += tem;
 
        sTpH[j] = sueldoTB[j] * horasTB[j];
        printf("Sueldo del trabajador %d, por las horas trabajadas es de: %f \n", i, sTpH[j]);
    }
 
    for (size_t n = 0; n < totalB-1; n++)
    {
        sueldoNT += sTpH[n];
    }
 
    printf("\nTotal Sueldos Base categoria B: %2.2f\n", sueldoBT);
    printf("Total horas trabajadas categoria B: %2.2f\n", horasTTA);
    printf("Sueldos de descuento categoria B : %2.2f\n", sumaDes);
    printf("Total de sueldos netos categoria B: %2.2f\n", sueldoNT);
 
    return 0;
}


c1
c2
c3
c4
c5
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 160
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Elaborar un programa que determine la nómina de dos categorías de trabajadores

Publicado por Andrés (53 intervenciones) el 10/03/2020 07:49:01
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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
int main() {
 
    int totalT = 0;
    printf("Ingrese el total de trabajadores Categoria A: ");
    scanf("%d", &totalT);
 
    float tem = 0;
    float sueldoTA[totalT];
    float horasTA[totalT];
    float sueTpH[totalT];
    float sueldoNT = 0.0;
    float sueldoBT = 0.0;
    float horasTTA = 0.0;
    float sumaDes = 0.0;
 
    for (register int i = 0; i < totalT; i++) {
 
        do {
            printf("Ingrese el sueldo por hora del trabajador %d: ", i + 1);
            scanf("%f", &sueldoTA[i]);
            printf("Ingrese las horas del trabajador %d: ", i + 1);
            scanf("%f", &horasTA[i]);
        } while (sueldoTA[i] <= 0 || horasTA[i] < 0);
 
        sueldoBT += sueldoTA[i];
        horasTTA += horasTA[i];
 
        if (150 >= sueldoTA[i]) {
            tem = sueldoTA[i] * 5;
        } else if (150 < sueldoTA[i] && sueldoTA[i] < 300) {
            tem = sueldoTA[i] * 7;
        } else {
            tem = sueldoTA[i] * 9;
        }
 
        tem /= 100;
        sueldoTA[i] = (sueldoTA[i] - tem);
        sumaDes += tem;
 
        sueTpH[i] = sueldoTA[i] * horasTA[i];
        printf("Sueldo del trabajador %d, por las horas trabajadas es de: %2.2f \n", i + 1, sueTpH[i]);
 
    }
 
    for (size_t n = 0; n < totalT; n++) {
        sueldoNT += sueTpH[n];
    }
 
    printf("\nTotal Sueldos Base categoria A: %2.2f\n", sueldoBT);
    printf("Total horas trabajadas categoria A: %2.2f\n", horasTTA);
    printf("Sueldos de descuento categoria A : %2.2f\n", sumaDes);
    printf("Total de sueldos netos categoria A: %2.2f\n\n", sueldoNT);
 
    int totalB = 0;
    printf("Ingrese el total de trabajadores Categoria B: ");
    scanf("%d", &totalB);
 
    float sueldoTB[totalB];
    float horasTB[totalB];
    float sTpH[totalB];
    sueldoNT = 0;
    sueldoNT = 0.0;
    sueldoBT = 0.0;
    float horasTTB = 0.0;
    sumaDes = 0.0;
 
    for (register int j = 0; j < totalB; j++) {
 
        do {
            printf("Ingrese el sueldo por hora del trabajador %d: ", j + 1);
            scanf("%f", &sueldoTB[j]);
            printf("Ingrese las horas del trabajador %d: ", j + 1);
            scanf("%f", &horasTB[j]);
        } while (sueldoTB <= 0 || horasTB < 0);
 
        sueldoBT += sueldoTB[j];
        horasTTB += horasTB[j];
 
        if (250 >= sueldoTB[j]) {
            tem = sueldoTB[j] * 7.0;
        } else if (250 < sueldoTB[j] && sueldoTB[j] < 500) {
            tem = sueldoTB[j] * 10.0;
        } else {
            tem = sueldoTB[j] * 9.0;
        }
 
        tem /= 100;
        sueldoTB[j] = (sueldoTB[j] - tem);
        sumaDes += tem;
 
        sTpH[j] = sueldoTB[j] * horasTB[j];
        printf("Sueldo del trabajador %d, por las horas trabajadas es de: %2.2f \n", j + 1, sTpH[j]);
    }
 
    for (size_t n = 0; n < totalB; n++) {
        sueldoNT += sTpH[n];
    }
 
    printf("\nTotal Sueldos Base categoria B: %2.2f\n", sueldoBT);
    printf("Total horas trabajadas categoria B: %2.2f\n", horasTTB);
    printf("Sueldos de descuento categoria B : %2.2f\n", sumaDes);
    printf("Total de sueldos netos categoria B: %2.2f\n", sueldoNT);
 
    return EXIT_SUCCESS;
 
}

... se puede simplificar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Elaborar un programa que determine la nómina de dos categorías de trabajadores

Publicado por Rodrigo (539 intervenciones) el 10/03/2020 14:26:07
(Considerando el programa original presentado)
El problema principal:
Linea 99 estas usando el indice i y el indice j, solo hay que usar el j.

Otros problemas:
Linea 98, calculas el porcentaje restando, hay que multiplicar. Lo mismo en la linea 47

Algunas simplificaciones:
Dado que todas las opciones en las lineas 99. 104 y 109 hacen lo mismo, puedes eliminar todas esas instrucciones y hacer solo 1 despues de los if(). Lo mismo en las lineas 38, 43 y 48.

Una n demas en "tranbajador"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar