Ir ao conteúdo

Posts recomendados

Postado

Olá amigos, sou muito novo em programação e necessito realizar um programa que leia o INSS com a tabela de cálculo igual a está:

 

474642016_Tab_calinss.png.307835af24190d78bf2956ead7b70033.png.125fecdff8d754a50484fb766acee766.png

 

671839571_Tab_calIR.png.fb9fc27253209e5436abec8418e58c83.png.e73299d9c678219072d9050a58358443.png

 

 

 

<>
    float sal, inss, ir, sal_liq, sal_brut, aliq, ded;
    printf("Digite seu salário: ");
    scanf("%f",&sal);
  
     if(sal <= 1247.70)
    {
         inss = sal * 0.08;           
    }
    else if (sal >= 1247.71 && sal <= 2079.50 )
    {
          inss = sal * 0.09;    
    }
    else if (sal >= 2079.51 && sal <= 4159.0 )
    {
        inss = sal * 0.11;       
    }
    else if (sal >= 4159.01)
    {
        inss = 468.00;
    }
    else if (sal >= 1710.78 )
    {
      ir=0;
    }
    
  
      if( sal == 1710.79 || sal <= 2563.91){
        ir = (sal * 0.075) - 128.31;
        sal_liq =  sal - ir - inss;
    
     
    }

      if( sal == 2563.92 || sal <= 3418.59){
          ir = (sal * 0.15) - 320.60;
             sal_liq =  sal - ir - inss;
    
      }
       

      else
        if( sal == 3418.60 || sal <= 4271.59){
          ir = (sal * 0.225) - 577;
          sal_liq =  sal - ir - inss;
        
      }
 
      else  if( sal > 4271.59){
      ir = (sal * 0.275) - 790.58;
        sal_liq =  sal - ir - inss;

    }
      
      sal_brut = sal;

     printf("Salário Bruto: %.2f\n",sal_brut); 
  
      printf("INSS: %.2f\n", inss);
  
      printf("Imposto de Renda: %.2f\n", ir);
  
      printf("Salário líquido: %.2f \n", sal_liq);
  
      printf("Obrigado pela preferência e Volte sempre!!");
  
      system ("pause");
}

 

por algum motivo ele está calculando ir errado, podem me ajudar?

Postado

@eric_luis Sua segunda condicional do ir está independente da anterior quando devia ser um else if. Mas os testes podem ser mais simples. Não precisa pegar o intervalo como fez em "sal >= 1247.71 && sal <= 2079.50" já que vai ir testar do menor para o maior, p.ex,

 

double salario;
double inss = 0;
double ir = 0;

...
  
    if(salario <= 1247.70){
        inss = salario * 0.08;
    }else if(salario <= 2079.50){
        inss = salario * 0.09;
    }else if(salario <= 4159.0){
        inss = salario * 0.11;
    }else{
        inss = 468.0;
    }
    
    if(salario > 1710.78){
        if(salario <= 2563.91){
            ir = salario * 0.075 - 128.31;
        }else if(salario <= 3418.59){
            ir = salario * 0.15 - 320.60;
        }else if(salario <= 4271.59){
            ir = salario * 0.225 - 557.00;
        }else{
            ir = salario * 0.275 - 790.58;
        }
    }

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!