Ir ao conteúdo

C++ código para calcular salário com descontos do inss e ir


Ir à solução Resolvido por herbertbahia,

Posts recomendados

Postado

Fala rapaziada, tava eu fazendo esse codigo aqui q um professor passou numa aula da faculdade, o codigo calculava o salario apenas com o desconto do inss, mas o professor sugeriu colocar o imposto de renda(ir) depois. Acontece que o codigo não calcula o desconto do ir e tambem não faz o desconto do inss quando coloco o salario acima de 4000. Ainda tô no 2° semestre de Analise e Desenvolvimento de sistemas, quem puder me dizer  o erro eu agradeço, valeu ai.

 

#include <iostream>


/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
	float salario_bruto;
	float inss;
	float ir;
	float salario_liquido; 
	
	printf("Digite seu Salario Bruto:  ");
	scanf("%f", &salario_bruto);
	
	
	if ( salario_bruto <=1693.72){
        inss = salario_bruto * 0.08; 
     }
    else
     
	if ( salario_bruto >=1693.73 && salario_bruto <=2822.90){
        inss = salario_bruto * 0.09; 
     }
	else
	
	if ( salario_bruto >=2822.90 && salario_bruto <=5646.80){	
		inss = salario_bruto * 0.11;
	}
	else
	
	if(salario_bruto >=5646.80){
		inss = salario_bruto - 621.04;
	}
	else
	
	if(salario_bruto <=1903.98){
		ir = salario_bruto - 0;
	}
	else
	
	if(salario_bruto >=1903.98 && salario_bruto <=2826.65){
		ir = salario_bruto * 0.075;
	}
	else
	
	if(salario_bruto >=2826.65 && salario_bruto <=3751.05){
		ir = salario_bruto * 0.15;
	}
	else
	
	if(salario_bruto >=3751.05 && salario_bruto <=4664.68){
		ir = salario_bruto * 0.225;
	}
	else
	
	if(salario_bruto >=4664.68){
		ir = salario_bruto * 0.275;
	}
	else
	
	salario_liquido = salario_bruto - inss - ir;
	
	printf ("\n Desconto Inss: %2.f\n\n", inss);
	printf ("\n Desconto Ir: %2.f\n\n", ir);
	printf ("\n Salario liquido: %2.f\n\n", salario_liquido);
	
	return 0;
}

 

  • Solução
Postado

Olá! Há alguns problemas no código que você apresentou que podem estar impedindo o cálculo correto do desconto do INSS e do IR. Aqui estão algumas sugestões de como corrigi-los:

A condição if (salario_bruto <= 1903.98) deve ser a primeira verificação a ser feita, pois se o salário for menor do que esse valor, o desconto do IR é zero e o cálculo deve ser encerrado ali. No código atual, essa verificação só é feita depois das verificações do INSS.

Para calcular o desconto do IR, você precisa primeiro subtrair o valor do INSS do salário bruto. No código atual, o desconto do INSS é calculado, mas não é subtraído do salário bruto antes de calcular o desconto do IR.

No cálculo do desconto do INSS para salários acima de R$ 5.646,80, o valor do desconto está incorreto. O correto seria subtrair um valor fixo de R$ 621,04.

Você precisa declarar as variáveis inss, ir e salario_liquido e inicializá-las com zero. Caso contrário, o valor dessas variáveis pode ser indefinido e o cálculo do salário líquido pode não ser correto.

Com essas sugestões em mente, aqui está uma versão corrigida do seu código:

#include <iostream>

int main(int argc, char** argv) {
    float salario_bruto, inss, ir, salario_liquido = 0;

    printf("Digite seu Salario Bruto: ");
    scanf("%f", &salario_bruto);

    if (salario_bruto <= 1903.98) {
        ir = 0;
    } else if (salario_bruto <= 2826.65) {
        ir = (salario_bruto - inss) * 0.075 - 142.80;
    } else if (salario_bruto <= 3751.05) {
        ir = (salario_bruto - inss) * 0.15 - 354.80;
    } else if (salario_bruto <= 4664.68) {
        ir = (salario_bruto - inss) * 0.225 - 636.13;
    } else {
        ir = (salario_bruto - inss) * 0.275 - 869.36;
    }

    if (salario_bruto <= 1693.72) {
        inss = salario_bruto * 0.08;
    } else if (salario_bruto <= 2822.90) {
        inss = salario_bruto * 0.09;
    } else if (salario_bruto <= 5645.80) {
        inss = salario_bruto * 0.11;
    } else {
        inss = 621.04;
    }

    salario_liquido = salario_bruto - inss - ir;

    printf("\nDesconto INSS: R$ %.2f\n", inss);
    printf("Desconto IR: R$ %.2f\n", ir);
    printf("Salario liquido: R$ %.2f\n", salario_liquido);

    return 0;
}

 

  • Curtir 1
  • mês depois...
Postado

Olá, eu peguei esse mesmo código e tentei acrescentar o "nome do funcionario", porém, não estou conseguindo.

algum de vocês poderiam me ajudar ?

 

#include <iostream>

int main (int argc, char** argv) {
    float salario_bruto, inss, ir, salario_liquido = 0;
    char nome;
 
    printf("Digite seu Salario Bruto: ");
    scanf("%f", &salario_bruto);

    if (salario_bruto <= 1903.98) {
        ir = 0;
    } else if (salario_bruto <= 2826.65) {
        ir = (salario_bruto - inss) * 0.075 - 142.80;
    } else if (salario_bruto <= 3751.05) {
        ir = (salario_bruto - inss) * 0.15 - 354.80;
    } else if (salario_bruto <= 4664.68) {
        ir = (salario_bruto - inss) * 0.225 - 636.13;
    } else {
        ir = (salario_bruto - inss) * 0.275 - 869.36;
    }

    if (salario_bruto <= 1693.72) {
        inss = salario_bruto * 0.08;
    } else if (salario_bruto <= 2822.90) {
        inss = salario_bruto * 0.09;
    } else if (salario_bruto <= 5645.80) {
        inss = salario_bruto * 0.11;
    } else {
        inss = 621.04;
    }
    
    printf("Digite o nome do funcionario: ");
    scanf("%c", &nome);
    
    salario_liquido = salario_bruto - inss - ir;
    
    printf("Nome do Funcionario:%c\n", nome);
    printf("Desconto INSS: R$ %.2f\n", inss);
    printf("Desconto IRRF: R$ %.2f\n", ir);
    printf("Salario liquido: R$ %.2f\n", salario_liquido);

    return 0;
}

 

Postado
15 minutos atrás, Joaovitor223 disse:
printf("Digite o nome do funcionario: ");
    scanf("%c", &nome);

 

%c é para ler uma letrinha... Declarou nome como char, que é uma letrinha. Não basta chamar de nome.

 

Não deve usar scanf() para isso. scanf é um scanner e foi escrita para outras coisas. Prefira o simples, fgets()

 

TESTE sempre o retorno de scanf

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