Ir ao conteúdo
  • Cadastre-se

Ajuda if e else


crownMCMXCVI
Ir à solução Resolvido por crownMCMXCVI,

Posts recomendados

Olá, sou novo no forum e preciso da ajuda de vocês. Tenho um trabalho para entregar mas acho que estou errando alguma coisa no if e no else. O programa até roda mas o cálculo está errado, pois não está calculando o IR corretamente. Agradeço a ajuda!

/*Criar um algoritmo que calcule o Salário Líquido, os Descontos e os Acréscimos de um funcionário:Descontos:- IR: para Salário Bruto até R$ 900,00 Isento,de R$ 900,01 até R$ 3.000,00 3%,de R$ 3.000,01 até R$ 4.000,00 5%,acima de R$ 4.000,00 7%.- Faltas: 3 % por falta.- Plano de Saúde: 6 %.Acréscimos:- Abono: 25 % do Salário Bruto + R$ 130,00, o valor do abono não pode ser maior    que R$ 1.000,00.- Vale-Alimentação: 12 %.- Salário Família: R$ 25,00 por dependente.• O Salário Líquido será igual ao Salário Bruto – Descontos + Acréscimos.• Salário Bruto, número de faltas e quantidade de dependentes deverão ser lidos.• Todas as porcentagens serão calculadas sobre o Salário Bruto.• O programa deverá informar o total dos acréscimos, o total dos descontos e o salário líquido.*/#include <stdio.h>#include <stdlib.h>#include <conio.h>int main (){    float S_BRUTO,S_LIQUIDO,ABONO,ACRESCIMOS,DESCONTOS,IR,FALTAS,P_SAUDE,V_ALIMENTACAO,S_FAMILIA,DEPENDENTES;    printf("\nInforme o salario bruto:");    scanf("%f",&S_BRUTO);    printf("\nInforme o numero de faltas:");    scanf("%f",&FALTAS);    printf("\nInforme a quantidade de dependentes:");    scanf("%f",&DEPENDENTES);    ABONO = (S_BRUTO*0.25+130);    if (ABONO>1000)     ABONO=1000;     if (S_BRUTO>900)     IR=0;     if ((3000>=S_BRUTO) && (S_BRUTO>900.1))    IR=S_BRUTO*0.03;     if ((4000>=S_BRUTO) && (S_BRUTO>3001))    IR=S_BRUTO*0.05;    if (S_BRUTO>4001)    IR=S_BRUTO*0.07;    DESCONTOS = (S_BRUTO*FALTAS*0.03+IR+S_BRUTO*0.06);    S_LIQUIDO=S_BRUTO-DESCONTOS+ACRESCIMOS;    ACRESCIMOS=(ABONO+S_BRUTO*0.12+25*DEPENDENTES);    printf("\nO valor liquido do salario e:%.2f",S_LIQUIDO);    printf("\nO valor dos descontos e:%.2f",DESCONTOS);    printf("\nO valor dos acrescimos e:%.2f",ACRESCIMOS);    getch();    return(0);}
Link para o comentário
Compartilhar em outros sites

Boa tarde Paulo Henrique!

 

No segundo If a condição está ao contrário, ou seja, o IR é zero quando o Salário for menor ou igual que 900.

 

Está faltando a faixa Salarial entre 901 e 3000.

 

Obs: procure identar seu código para uma melhor compreensão!

 

Atte,

 

Leandrinhop 

Link para o comentário
Compartilhar em outros sites

  • Solução

Arrumei e cheguei ao seguinte resultado: (Acho que agora está correto):

#include <stdio.h>#include <conio.h>main (){    float S_BRUTO,S_LIQUIDO,ABONO,ACRESCIMOS,DESCONTOS,IR,FALTAS,P_SAUDE,V_ALIMENTACAO,S_FAMILIA,DEPENDENTES;    printf("\nInforme o salario bruto:");    scanf("%f",&S_BRUTO);    printf("\nInforme o numero de faltas:");    scanf("%f",&FALTAS);    printf("\nInforme a quantidade de dependentes:");    scanf("%f",&DEPENDENTES);    ABONO = (S_BRUTO*0.25+130);    if (ABONO>1000)    ABONO=1000;    if (S_BRUTO>900)    IR=0;    if(3000>=S_BRUTO && S_BRUTO>900.1)    IR=S_BRUTO*0.03;    if (4000>=S_BRUTO && S_BRUTO>3001)    IR=S_BRUTO*0.05;    if (S_BRUTO>4001)    IR=S_BRUTO*0.07;    DESCONTOS = (S_BRUTO*FALTAS*0.03+IR+S_BRUTO*0.06);    ACRESCIMOS=(ABONO+S_BRUTO*0.12+25*DEPENDENTES);    S_LIQUIDO=S_BRUTO-DESCONTOS+ACRESCIMOS;    printf("\nO valor liquido do salario e:%.2f",S_LIQUIDO);    printf("\nO valor dos descontos e:%.2f",DESCONTOS);    printf("\nO valor dos acrescimos e:%.2f",ACRESCIMOS);    getch();    return(0);}
Link para o comentário
Compartilhar em outros sites

Na verdade você não terá problemas quanto aos valores, mais este programa possui um erro de lógica.

 

Veja que no segundo if a comparação está invertida.

 

Como existe apenas um comando por if você não terá problemas quanto ao resultado mais se você digitar um valor de salário entre 901 3000 o programa entrará no segundo e no terceiro if.

 

Dica: faça o teste de mesa.

 

Atte,

 

Leandro

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!