0
I developed the following program in C for an income tax calculation of employees of a company
#include <stdio.h>
int main(){
//Declaração de variaveis
int depen,cont,a1=0,a2=0,a3=0,a4=0,a5=0;
double salario,inss,base,dedudepen,aliq,imposto;
double totalsalario,totaldepen,totalimposto;
double mediasalario,mediadepen,mediaimposto;
//Enquanto o valor do salário for diferente de negativo ou nulo, executa o programa
while(salario>0){
//Dados de Salário e número de dependentes
printf("Digite o salario:\n");
scanf("%lf",&salario);
if(salario>0){
printf("Digite o numero de dependentes:\n");
scanf("%d",&depen);
//Calculo do INSS
if(salario<=1751.81){
inss=salario*0.08;
}
else if (salario<=2919.72){
inss=salario*0.09;
}
else if (salario<=5839.45){
inss=salario*0.11;
}
else {
inss=642.34;
}
printf("INSS:%.2lf\n",inss);
//Calculo da dedução por dependentes
dedudepen=depen*189.59;
printf("DEDUCAO DE DEPENDENTES:%.2lf\n",dedudepen);
//Calculo da base
base=salario-inss-dedudepen;
printf("BASE:%.2lf\n",base);
//Calculo do Imposto de renda
if(base<=1903.98){
a1++; //conta quantos funcionarios estão presentes nessa faixa de IR
aliq=base*0.00;
imposto= aliq-0;
printf("IR:%.2lf\n",imposto);
}
else if(base<=2826.65){
a2++;
aliq=base*0.075;
imposto= aliq-142.80;
printf("IR:%.2lf\n",imposto);
}
else if(base<=3751.05){
a3++;
aliq=base*0.15;
imposto= aliq-354.80;
printf("IR:%.2lf\n",imposto);
}
else if(base<=4664.68){
a4++;
aliq=base*0.225;
imposto= aliq-636.13;
printf("IR:%.2lf\n",imposto);
}
else {
a5++;
aliq=base*0.275;
imposto= aliq-869.36;
printf("IR:%.2lf\n",imposto);
}
//Armazena todos os valores para o calculo da media
totalsalario=totalsalario+salario;
totaldepen=totaldepen+depen;
totalimposto=totalimposto+imposto;
cont=cont+1;
}
else{
}
}
//Calculo da média e exibição
if(cont=!0){
mediasalario=totalsalario/cont;
mediadepen=totaldepen/cont;
mediaimposto=totalimposto/cont;
}
printf("MEDIA SALARIOS:%.2lf\n",mediasalario);
printf("MEDIA DEPENDENTES:%.2lf\n",mediadepen);
printf("MEDIA IR:%.2lf\n\n",mediaimposto);
printf("FUNCIONARIOS POR FAIXA DE IR:\n");
printf("Ate R$ 1.903,98: %d\n",a1);
printf("De R$ 1.903,99 a R$ 2.826,65: %d\n",a2);
printf("De R$ 2.826,66 a R$ 3.751,05: %d\n",a3);
printf("De R$ 3.751,06 a R$ 4.664,68: %d\n",a4);
printf("Acima de R$ 4.664,68: %d\n",a5);
return 0;
}
works normally until the part of the employee count per IR range, if used with only two counters the values normally come out
//Calculo do Imposto de renda
if(base<=1903.98){
a1++; //conta quantos funcionarios estão presentes nessa faixa de IR
aliq=base*0.00;
imposto= aliq-0;
printf("IR:%.2lf\n",imposto);
}
else if(base<=2826.65){
a2++;
aliq=base*0.075;
imposto= aliq-142.80;
printf("IR:%.2lf\n",imposto);
}
else if(base<=3751.05){
// a3++; a partir do 3 estão como comentarios por conta do erro
aliq=base*0.15;
imposto= aliq-354.80;
printf("IR:%.2lf\n",imposto);
}
else if(base<=4664.68){
// a4++;
aliq=base*0.225;
imposto= aliq-636.13;
printf("IR:%.2lf\n",imposto);
}
else {
// a5++;
aliq=base*0.275;
imposto= aliq-869.36;
printf("IR:%.2lf\n",imposto);
}
but if used with the 5 counters it does not allow to insert values in the scanf and always displays blank values, someone has some idea of what could be the error or solution?
You did not initialize your cont variable. Make a correct indentation.
– anonimo