Ir para conteúdo
Fórum Script Brasil
  • 0

If's aninhados: como fazer?


infomania

Pergunta

Faça um Programa em C, que leia os dados do funcionário de uma

Empresa e calcule o seu salário. Do funcionário devem ser lidos o seu código de

identificação, o número de horas trabalhadas e o valor da hora trabalhada. O salário

base do funcionário é calculado a partir do produto entre as horas trabalhadas e o valor

da hora.

Já o seu salário final (salário líquido) é o salário base menos os descontos. Os

descontos são referentes às contribuições do INSS e Imposto de Renda. A partir das

tabelas abaixo que descrevem os cálculos e deduções, calcule o salário final do

funcionário e o escreva juntamente com o seu código. (Use if´s aninhados com o menor

número de testes, sempre que possível).

O desconto do INSS segue a tabela abaixo:

Salário Base

Até R$ 800,45 Desconto --> 7,56%

De R$ 800,46 a R$ 900,00 Desconto --> 8,65%

De R$ 900,01 a R$ 1.334,07 Desconto --> 9%

De R$ 1.334,08 em diante Desconto --> 11%

Obs.: A partir de R$ 1.334,08 o funcionário descontará 11% desse valor apenas.

O Imposto de Renda segue a seguinte tabela:

Salário Base

Até R$ 1.164,00 Desconto --> 0% Parcela a deduzir --> -

De R$ 1.164,01 a R$ 2.326,00 Desconto --> 15% Parcela a deduzir --> R$ 174,60

Acima de R$ 2.326,00 Desconto --> 27,5% Parcela a deduzir --> R$ 465,35

Obs.: “Parcela a deduzir” é um valor que é subtraído do desconto do Imposto de Renda.

FIZ ATÉ O PRESENTE MOMENTOS ISTO:

#include <stdio.h>
#include <stdlib.h>
main()
{
int cod_id;
float hs_trab,vl_ht,sal,sal_final,inss,irrf;
printf("Digite o codigo de identifixcacao do funcionario:);
scanf("%i",cod_id);
printf("Digite o numero de horas trabalhadas:);
scanf("%f",hs_trab);
printf("Digite o valor da hora trabalhada:);
scanf("%f",vl_ht);
sal=(hs_trab*vl_ht);

PAREI POR AQUI NÃO CONSEGUI EFETUAR OS CÁLCULOS SOLICITADOS NO EXERCÍCIO... AGUARDO AJUDAS.

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Normalmente, para calcular porcentagem você faz o que?

- Multiplica o número pela porcentagem a ser descoberta;

- Divide por 100;

Se você analisar, as 2 operações tem a mesma prioridade(divisão e multiplicação), então pouco importa qual das 2 operações você vai fazer primeiro.

Agora veja, se você quer descobrir 10% de 50, você multiplica 50 por 10 e divide por 100, se você realizar a operação (multiplicar por 10 e dividir por 100) ANTES de multiplicar por, ficaria assim:

10/100 * 50

0.1 * 50

5

Agora se fosse 20%

20/100 * 50

0.2 * 50

10

Então resumindo, para você descobrir uma certa porcentagem de um valor, basta multiplicar pelo centésimo desse valor, segue alguns exeplos:

33% -> 0.33

10% -> 0.1 (que é a mesma coisa que 0.10)

1.5% (um e meio porcento) -> 0.015

1% -> 0.01

100% -> 1

Se você tem um produto com um preço X, e você quer dar um desconto de 5% (então no fundo você quer saber 95% (1 - 0.05) do preço original do produto) basta você multiplicar o preço X por 0.95 que você vai ter 95% do preço do produto.

O mesmo serve para aumentar o preço, se você quer cobrar 3% a mais, então você quer saber o preço dele(1 + 0.03), então basta multiplicar X por 1.03

Enfim, espero que tenha ajudado!

Qualquer coisa dá um toque!

Link para o comentário
Compartilhar em outros sites

  • 0

Até R$ 800,45 Desconto --> 7,56%

De R$ 800,46 a R$ 900,00 Desconto --> 8,65%

De R$ 900,01 a R$ 1.334,07 Desconto --> 9%

De R$ 1.334,08 em diante Desconto --> 11%

Seria algo assim

if( valor <= 800.45 ){
    //7.56%
//Aqui você pode por assim também: if( valor > 800.45 && valor <= 900 ){
}else if( valor <= 900 ){
    //8.65%
}else if( valor <= 1334.07 ){
    //9%
}else {
    //11%
}
Uma lógica semelhante se aplica a 2 tabela de preços. Um bom conselho é fazer na ordem, porque daí você não precisa usar o limite inferior, segue um exemplo:
if( valor <= 800.45 ){//Só vai entrar aqui se for menor ou IGUAL a 800.45
}else if( valor <= 900 ){//Só vai entrar aqui se for MAIOR a 800.45 e menor ou IGUAL a 900, se fosse menor iria entrar no 1º if
}else if( valor <= 1334.07 ){//Só vai entrar aqui se for MAIOR que 900 e menor ou igual a 1334.07
}else {//Se for MAIOR que 1334.07
}
/*
 * Basicamente essa maneira de fazer utiliza o if anterior para definir o limite anterior, só vai funcionar se for feito
 * em uma sequência lógica. Por exemplo: do maior pro menor, do menor pro maior.
 */


if( valo <=800.45 ){
}else if( valor>800.45 && valor<=900 ){
}else if( valor>900 && valor<=1334.07 ){
}else if( valor>1334.07{//Se for MAIOR que 1334.07
}
/*
 * Faz exatamente a mesma coisa que o código acima, só que nesse caso os limites inferiores estão explicitamentes
 * declarados no if
 */

Acho que é isso, qualquer coisa dá um toque aí! ;)

Editado por p4t0X
Link para o comentário
Compartilhar em outros sites

  • 0

#include <stdio.h>
#include <stdlib.h>
main()
{
int cod_id;
float hs_trab,vl_ht,sal,sal_final,inss,irrf;
printf("Digite o codigo de identifixcacao do funcionario:);
scanf("%i",&cod_id);
printf("Digite o numero de horas trabalhadas:);
scanf("%f",&hs_trab);
printf("Digite o valor da hora trabalhada:);
scanf("%f",&vl_ht);
sal=(hs_trab*vl_ht);
if(valor <= 800.45){
    inss=(valor*7.56)/100;
    sal_final=(sal-inss);
}else if(valor > 800.45)||(valor <=900.00){
    inss=(valor*8.65)/100;
    sal_final=(sal-inss);
}else if((valor > 900.00)||(valor <=1334.07){
    inss=(valor*9)/100;
    sal_final=(sal-inss);
}else if(valor > 1334.07){
    inss=(valor*11)/100;
    sal_final=(sal-inss);
}

COMO FAÇO PARA CALCULAR O DESCONTO E AS PARCELAS A DEDUZIR DO IRRF, SEGUE TABELA DOS DESCONTOS P/ IRRF ABAIXO...

Salário Base

Até R$ 1.164,00 Desconto --> 0% Parcela a deduzir --> -

De R$ 1.164,01 a R$ 2.326,00 Desconto --> 15% Parcela a deduzir --> R$ 174,60

Acima de R$ 2.326,00 Desconto --> 27,5% Parcela a deduzir --> R$ 465,35

Obs.: “Parcela a deduzir” é um valor que é subtraído do desconto do Imposto de Renda.

Link para o comentário
Compartilhar em outros sites

  • 0

CÁLCULO O VALOR FINAL (sal_final) aonde??? Lembrando que o sal_final = sal - inss - irrf

#include <stdio.h>

#include <stdlib.h>

main()

{

int cod_id;

float hs_trab,vl_ht,sal,sal_final,inss,irrf;

printf("Digite o codigo de identifixcacao do funcionario:");

scanf("%i",&cod_id);

printf("Digite o numero de horas trabalhadas:");

scanf("%f",&hs_trab);

printf("Digite o valor da hora trabalhada:");

scanf("%f",&vl_ht);

sal=(hs_trab*vl_ht);

if(valor <= 800.45){ --> ACUSA ERRO AQUI <--

inss=(valor*7.56)/100;

sal_final=(sal-inss);

}else

if(valor > 800.45)&&(valor <=900.00){

inss=(valor*8.65)/100;

sal_final=(sal-inss);

}else

if((valor > 900.00)&&(valor <=1334.07){

inss=(valor*9)/100;

sal_final=(sal-inss);

}else

if(valor > 1334.07){

inss=(valor*11)/100;

sal_final=(sal-inss);

}

if(valor <= 1164.00){

irrf=(valor*0)/100;

sal_final=(sal-irrf);

}else

if(valor >1164.00)&&(valor <=2326.00){

irrf=(valor*15)/100;

sal_final=(sal-irrf);

}else

if((valor > 2326.00){

irrf=(valor*27.5)/100;

sal_final=(sal-irrf);

}

system("pause")

}

Link para o comentário
Compartilhar em outros sites

  • 0

Eu tenho que calcular o desconto agora....

sal_final= (sal - inss - irrf);

Minha dúvida é a seguinte:

Imprimo aonde isto??? Tenho que calcular para todas as faixas dos descontos do INSS e do IRRF???

#include <stdio.h>

#include <stdlib.h>

main()

{

int cod_id;

float hs_trab,vl_ht,sal,sal_final,inss,irrf;

printf("Digite o codigo de identifixcacao do funcionario:");

scanf("%i",&cod_id);

printf("Digite o numero de horas trabalhadas:");

scanf("%f",&hs_trab);

printf("Digite o valor da hora trabalhada:");

scanf("%f",&vl_ht);

sal=(hs_trab*vl_ht);

if(sal <= 800.45){

inss=(sal*7.56)/100;

sal_final=(sal-inss);

}else

if(sal > 800.45)&&(sal <=900.00){ --> AGORA TEM ERRO AQUI <--

inss=(sal*8.65)/100;

sal_final=(sal-inss);

}else

if((sal > 900.00)&&(sal <=1334.07){

inss=(sal*9)/100;

sal_final=(sal-inss);

}else

if(sal > 1334.07){

inss=(sal*11)/100;

sal_final=(sal-inss);

}

if(sal <= 1164.00){

irrf=(sal*0)/100;

sal_final=(sal-irrf);

}else

if(sal >1164.00)&&(sal <=2326.00){

irrf=(sal*15)/100;

sal_final=(sal-irrf);

}else

if((sal > 2326.00){

irrf=(sal*27.5)/100;

sal_final=(sal-irrf);

}

system("pause")

}

Link para o comentário
Compartilhar em outros sites

  • 0

AGORA ELE COMPILOU SEM ERROS PORÉM ELE PEDE A IDENTIFICAÇÃO DO FUNCIONÁRIO, O Nº DE HORAS TRABALHADAS E O VALOR DA HORA TRABALHADA... E PEDE UMA TELA PARA SAIR DO PROGRAMA... OU SEJA, O PROGRAMA NÃO ESTÁ CALCULANDO POIS NÃO SEI AONDE EU TENHO QUE CALCULAR O DESCONTO AGORA.....

sal_final= (sal - inss - irrf);

Minha dúvida é a seguinte:

Imprimo aonde isto??? Tenho que calcular para todas as faixas dos descontos do INSS e do IRRF???

#include <stdio.h>
#include <stdlib.h>
main()
{
    int cod_id;
    float hs_trab,vl_ht,sal,sal_final,inss,irrf;
    printf("Digite o codigo de identificacao do funcionario:");
    scanf("%i",&cod_id);
    printf("Digite o numero de horas trabalhadas:");
    scanf("%f",&hs_trab);
    printf("Digite o valor da hora trabalhada:");
    scanf("%f",&vl_ht);
    sal=(hs_trab*vl_ht);

    if(sal <= 800.45){
        inss=(sal*7.56)/100;
        sal_final=(sal-inss);
    } else
        if(sal > 800.45 && sal <=900.00){ 
            inss=(sal*8.65)/100;
            sal_final=(sal-inss);
        } else
            if(sal > 900.00 && sal <=1334.07){
                inss=(sal*9)/100;
                sal_final=(sal-inss);
            }else
                if(sal > 1334.07){
                    inss=(sal*11)/100;
                    sal_final=(sal-inss);
                }
                if(sal <= 1164.00){
                    irrf=(sal*0)/100;
                    sal_final=(sal-irrf);
                }else
                    if(sal >1164.00 && sal <=2326.00){
                        irrf=(sal*15)/100;
                        sal_final=(sal-irrf);
                    }else
                        if(sal > 2326.00){
                            irrf=(sal*27.5)/100;
                            sal_final=(sal-irrf);
                        }
system("pause");
}

Link para o comentário
Compartilhar em outros sites

  • 0

#include <stdio.h>
#include <stdlib.h>
main()
{
    int cod_id;
    float hs_trab,vl_ht,sal,sal_final,inss,irrf;
    printf("Digite o codigo de identificacao do funcionario:");
    scanf("%i",&cod_id);
    printf("Digite o numero de horas trabalhadas:");
    scanf("%f",&hs_trab);
    printf("Digite o valor da hora trabalhada:");
    scanf("%f",&vl_ht);
    sal=(hs_trab*vl_ht);

    //INSS
    if(sal <= 800.45){
        inss=(sal*7.56)/100;
    }else if(sal > 800.45 && sal <=900.00){ 
        inss=(sal*8.65)/100;
    }else if(sal > 900.00 && sal <=1334.07){
        inss=(sal*9)/100;
    }else if(sal > 1334.07){
        inss=(sal*11)/100;
    }
    //IRRF
    if(sal <= 1164.00){
        irrf=(sal*0)/100;
    }else if(sal >1164.00 && sal <=2326.00){
        irrf=(sal*15)/100;
    }else if(sal > 2326.00){
        irrf=(sal*27.5)/100;
    }

    //Mostre aqui os resultados
    printf( "Salario total: %.2f\nSalario com os impostos cobrado: %.2f\n", sal , sal-irrf-inss );

    system("pause");
}

ehsaiusheiha, eu rí da razão por editar :s

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...