Ir ao conteúdo
  • Cadastre-se

C++ Calculo de Inss e Ir sobre salário


Guga04
Ir à solução Resolvido por Midori,

Posts recomendados

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  

e a tabela do IR igual a está:

671839571_Tab_calIR.png.fb9fc27253209e5436abec8418e58c83.png                                             

 

ao tentar escrever o código, ele ficou dessa forma:

<>

#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
#include<math.h>

int main()
{
    float sal, inss, ir, sal_liq2, sal_liq, aliq, ded;
    printf("insira seu salario por favor: R$ ");
    scanf("%f",&sal);

     
    if(sal <= 1.247,70)
    {
         inss = sal * 0.08;           
    }
    else if (sal >= 1.247,71 && sal <= 2.079,50 )
    {
          inss = sal * 0.09;    
    }
    else if (sal >= 2.079,51 && sal <= 4.159,00 )
    {
        inss = sal * 0.11;       
    }
    else if (sal >= 4.159,01)
    {
        inss = sal - 468,00;        
    }
    else if (sal >= 1.710,78 )
    {
        aliq = 0;    
        ded = 0;
        ir = sal * ir - ded;
    }
    else if (sal >= 1.710,79 && sal <= 2.563,91 )
    {
        aliq = 0.075;
        ded = 128,31;    
        ir = sal * ir - ded;    
    }
    else if (sal >= 2.563,92 && sal <= 3.418,59 )
    {
        aliq = 0.15;
        ded = 320,60;
        ir = sal * ir - ded;
    }
    else if (sal >= 3.418,60 && sal < 4.271,59 )
    {
        aliq = 0.225;
        ded = 577,00;
        ir = sal * ir - ded;
    }
    else if (sal >= 4.271,59 )
    {
        aliq = sal * 0.275;
        ded = 790,58;
        ir = sal * ir - ded;
    }
    
    sal_liq = sal - ir - inss;
    
    printf("Salario: %g\n",sal);
    printf("INSS: %g\n",inss);  
    printf("IR: %g\n", ir);
    printf("Salario Liquido: R$%g\n",sal_liq);

    system("pause");
    return 0;
}

De alguma forma ele está calculando apenas o primeiro bloco do de verdade do INSS, fazendo com que o programa calcule apenas um resultado

60271281_execuo13.png.5f85a55fe921b7d1d4a0a3e50180eb2e.png

 

Gostaria de saber o que estou fazendo de errado no programa por favor!

Link para o comentário
Compartilhar em outros sites

  • Solução

@Guga04 Para o cálculo do IR tem que abrir outro if (e não continuar else if do cálculo do INSS. Comece no cálculo do salário menor que 1.710,78 e atribua zero ao IR já que nesse caso é isento,

 

if(sal <= 1710.78 ){
    ir = 0;
}

 

Nos outros testes do IR seu código está atribuindo a alíquota, mas não usa essa variável no cálculo, p.ex no segundo teste do cálculo do IR,

else if(sal >= 2563.92 && sal <= 3418.59 ){
    aliq = 0.15;
    ded = 320.60;
    ir = sal * aliq - ded;
}

 

Na atribuição usei a variável aliq, mas no seu código está ir.

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

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...