# I do not work the average inside the for

4

I'm doing a program, I have a problem with the average that gives me 0, and try to put it out of `for` and the same thing happens, could someone tell me my error?

Sentence:

Given the salaries and category of 5 employees is asked to obtain.

a) Amount of salaries = 12000 in category2 and salaries 15000.

d) Average of the salaries of each category.

``````int categoria;
int categoria1 = 0;
int categoria2 = 0;
int categoria3 = 0;
int sueldo = 0;
int promedio1 = 0;
int sumatoria1 = 0;
int sueldoTotal = 0;
int sumatoria2 = 0;
int sumatoria3 = 0;
int promedio2 = 0;
int promedio3 = 0;

for (int i = 1; i < empleado; i++) {

System.out.println("Ingrese el numero de categoria : ");
System.out.println(i + "Ingrese sueldo : ");

if (categoria == 1) {

if (sueldo < 10000) {
categoria1++;
}

}

if (categoria == 2) {

if (sueldo >= 12000) {

categoria2++;
}

}

if (categoria == 3) {
if (sueldo <= 15000) {
categoria3++;
}

}

if (sueldo > 15000) {

sueldoTotal++;
}

sumatoria1 += categoria1;
sumatoria2 += categoria2;
sumatoria3 += categoria3;

promedio1 = sumatoria1 / 5;
promedio2 = sumatoria2 / 5;
promedio3 = sumatoria3 / 5;

}

System.out.println("a)Cantidad de sueldos < 10000 en la categoria 1 : " + categoria1);
System.out.println("b1)Cantidad de sueldos >= 12000 en la categoria 2 : " + categoria2);
System.out.println("b2)Cantidad de sueldos <= 15000 en la categoria 3 : " + categoria3);
System.out.println("c)Cantidad de sueldos > 15000 : " + sueldoTotal);
System.out.println("El promedio de la categoria 1 : " + promedio1);
System.out.println("El promedio de la categoria 2 : " + promedio2);
System.out.println("El promedio de la categoria 3 : " + promedio3);
``````

asked by computer96 09.08.2018 в 22:07
source

3

I think the only problem is in the averages, first you must take into account that the average should be:

`````` suma de sueldos de categoría / número de registros en categoría
``````

so you should not define a fixed value of 5 since you are going to register 6 employees ( `int empleado = 6;` ) but probably one of those categories does not register value.

This would be the change in your code:

``````    int categoria;
int categoria1 = 0;
int categoria2 = 0;
int categoria3 = 0;
int sueldo = 0;
int promedio1 = 0;
int sumatoria1 = 0;
int sueldoTotal = 0;
int sumatoria2 = 0;
int sumatoria3 = 0;
int promedio2 = 0;
int promedio3 = 0;

int sueldoCat1 = 0;
int sueldoCat2 = 0;
int sueldoCat3 = 0;

for (int i = 0; i < empleado; i++) {

System.out.println("Ingrese el numero de categoria : ");
System.out.println(i + "Ingrese sueldo : ");

if (categoria == 1) {

if (sueldo < 10000) {
categoria1++;
}
sueldoCat1 += sueldo;
sumatoria1 += 1;
}

if (categoria == 2) {

if (sueldo >= 12000) {

categoria2++;
}
sueldoCat2 += sueldo;
sumatoria2 += 1;
}

if (categoria == 3) {
if (sueldo <= 15000) {
categoria3++;
}
sueldoCat3 += sueldo;
sumatoria3 += 1;

}

if (sueldo > 15000) {

sueldoTotal++;
}

/*promedio1 = sumatoria1 / 5;
promedio2 = sumatoria2 / 5;
promedio3 = sumatoria3 / 5;*/

}

if(sumatoria1>0) //Evita division entre 0
promedio1 = sueldoCat1 / sumatoria1;
if(sumatoria2>0) //Evita division entre 0
promedio2 = sueldoCat2 / sumatoria2;
if(sumatoria3>0) //Evita division entre 0
promedio3 = sueldoCat3 / sumatoria3;

System.out.println("a)Cantidad de sueldos < 10000 en la categoria 1 : " + categoria1);
System.out.println("b1)Cantidad de sueldos >= 12000 en la categoria 2 : " + categoria2);
System.out.println("b2)Cantidad de sueldos <= 15000 en la categoria 3 : " + categoria3);
System.out.println("c)Cantidad de sueldos > 15000 : " + sueldoTotal);
System.out.println("El promedio de la categoria 1 : " + promedio1);
System.out.println("El promedio de la categoria 2 : " + promedio2);
System.out.println("El promedio de la categoria 3 : " + promedio3);
``````

source
1

I would make the following modifications:

``````if (categoria == 1 && sueldo < 10000) {
categoria1++;
sumatoria1 += sueldo;
}

else if (categoria == 2 && sueldo >= 12000) {
categoria2++;
sumatoria2 += sueldo;
}
else if (categoria == 3 && sueldo <= 15000) {
categoria3++;
sumatoria3 += sueldo;
}

if (sueldo > 15000) {
sueldoTotal++;
}
``````

Since if we realize what we are adding are the employees who have that salary not their salary.

I hope it helps you.

1

You only have to change the data types to rational numbers in which you calculate the average, in this case to double

``````int categoria;
int categoria1 = 0;
int categoria2 = 0;
int categoria3 = 0;
int sueldo = 0;
int sumatoria1 = 0;
int sueldoTotal = 0;
int sumatoria2 = 0;
int sumatoria3 = 0;
double promedio1 = 0;
double promedio2 = 0;
double promedio3 = 0;

for (int i = 1; i < empleado; i++) {

System.out.println("Ingrese el numero de categoria : ");
System.out.println(i + "Ingrese sueldo : ");

if (categoria == 1) {
if (sueldo < 10000) {
categoria1++;
}
}
if (categoria == 2) {
if (sueldo >= 12000) {
categoria2++;
}
}
if (categoria == 3) {
if (sueldo <= 15000) {
categoria3++;
}
}
if (sueldo > 15000) {
sueldoTotal++;
}

sumatoria1 += categoria1;
sumatoria2 += categoria2;
sumatoria3 += categoria3;

}
promedio1 = sumatoria1 / 5;
promedio2 = sumatoria2 / 5;
promedio3 = sumatoria3 / 5;

System.out.println("a)Cantidad de sueldos < 10000 en la categoria 1 : " + categoria1);
System.out.println("b1)Cantidad de sueldos >= 12000 en la categoria 2 : " + categoria2);
System.out.println("b2)Cantidad de sueldos <= 15000 en la categoria 3 : " + categoria3);
System.out.println("c)Cantidad de sueldos > 15000 : " + sueldoTotal);
System.out.println("El promedio de la categoria 1 : " + promedio1);
System.out.println("El promedio de la categoria 2 : " + promedio2);
System.out.println("El promedio de la categoria 3 : " + promedio3);
``````