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

(Resolvido) Problemas com exercício C#


Mexicano

Pergunta

Estou começando o curso de C# e estou com problemas..

Segue o exercicio:

Faça um algoritmo que peça o valor da hora trabalhada para um funcionário

que trabalhe por hora, número de horas trabalhadas no mês, e o percentual de

desconto do INSS. O algoritmo deverá mostrar o salário bruto, o valor descontado

o valor do salário líquido do funcionário. :blink: :huh:

static void Main(string[] args)
        {
           int horaT, inss, insss, nHORAS, salarioB, desconto, salarioL;
            
            Console.WriteLine("Valor da hora trabalhada: ");
            horaT = Convert.ToInt16(Console.ReadLine());
            
            Console.WriteLine("Percentual do INSS: ");
            insss = Convert.ToInt16(Console.ReadLine());
            
            Console.WriteLine("Horas trabalhadas ao mês: ");
            nHORAS = Convert.ToInt16(Console.ReadLine());
            
            salarioB = horaT * nHORAS;
            Console.WriteLine("Valor do salario bruto: {0}", salarioB);
            Console.ReadLine();
            
            inss = (insss / 100);
            
            salarioL = salarioB - inss;
            Console.WriteLine("Valor do salario liquido:  {0}", salarioL);
            Console.ReadLine();

            desconto = salarioL - (salarioL - inss);
            Console.WriteLine("Valor descontado:  {0}", desconto);
            Console.ReadLine();
       }
    }
}[/color]

resultado do debug!

debug.jpg

O que eu posso editar para que de certo??

OBRIGADO

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

9 respostass a esta questão

Posts Recomendados

  • 0

Ao invés de:

salarioL = salarioB - inss;
O correto seria:
salarioL = salarioB - inss*salarioB;
Como você mostra o valor descontado depois, o ideal seria calcular o desconto antes e depois simplesmente subtrair:
inss = (insss / 100);
desconto = inss * salarioB;

salarioL = salarioB - desconto;
Console.WriteLine("Valor do salario liquido:  {0}", salarioL);
Console.ReadLine();

Console.WriteLine("Valor descontado:  {0}", desconto);
Console.ReadLine();

Poste aí se funcionou ou não.

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pela correção do calculo do salarioL...

realmente estava errado

porém,apesar da troca da ordem, o debug deu no mesmo.

ainda apresenta o desconto como 0 e o salarioL fica = ao salarioB

salarioB = horaT * nHORAS;
            Console.WriteLine("Valor do salario bruto: {0}", salarioB);
            Console.ReadLine();

            inss = (insss / 100);
            desconto = inss * salarioB;
            Console.WriteLine("Valor descontado:  {0}", desconto);
            Console.ReadLine();

            salarioL = salarioB - desconto;
            Console.WriteLine("Valor do salario liquido:  {0}", salarioL);
            Console.ReadLine();

trabalhod.jpg

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, tentei como double e float

int horaT, insss, nHORAS;
            float salarioB, salarioL, inss, desconto;

você poderia postar

a sua resolução completa para eu comparar, tenho certeza que errei em alguma outra parte

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

  • 0

A variável inss também deve ser float, já que você vai dividí-la por 100 (outra opção é convertê-la para float antes). Segue o código completo:

static void Main(string[] args)
{
    float horaT, inss, insss, nHORAS, salarioB, desconto, salarioL;
            
    Console.WriteLine("Valor da hora trabalhada: ");
    horaT = Convert.ToInt16(Console.ReadLine());
            
    Console.WriteLine("Percentual do INSS: ");
    insss = Convert.ToInt16(Console.ReadLine());
            
    Console.WriteLine("Horas trabalhadas ao mês: ");
    nHORAS = Convert.ToInt16(Console.ReadLine());
            
    salarioB = horaT * nHORAS;
    Console.WriteLine("Valor do salario bruto: {0}", salarioB);
    Console.ReadLine();

    inss = (insss / 100);
    desconto = inss * salarioB;

    salarioL = salarioB - desconto;
    Console.WriteLine("Valor do salario liquido:  {0}", salarioL);
    Console.ReadLine();

    Console.WriteLine("Valor descontado:  {0}", desconto);
    Console.ReadLine();
}

Link para o comentário
Compartilhar em outros sites

  • 0

De nada, qualquer coisa é só postar!

Um coisa que não tinha visto: como as variáveis são float o mais correto seria converter para ponto flutuante ao invés de short int (UInt16), mas isso só atrapalha se o usuário digitar valores com casas decimais.

Obs.:

O tópico foi marcado como Resolvido.

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,1k
    • Posts
      651,9k
×
×
  • Criar Novo...