Ir ao conteúdo

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


Ir à solução Resolvido por Midori,

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  

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!

Postado

@Midori Me ajudou bastante, muito obrigado. Porém agora estou com um novo problema, o programa não lê o ir, na exibição aparece apenas o valor de 0! Você poderia me dizer também qual pode ser o erro por favor?

  • Solução
Postado

@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

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!