Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Código do exercício Opcional Alíquota IF

Pessoal, Esta forma de elaborar está ok?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Opcional_Aliquota_com_Ifs
{
    class Program
    {
        static void Main(string[] args)
        {
            // De 1900.0 até 2800.0 o IR é de 7.5% e pode deduzir R$ 142
            // De 2800.01 até 3751.0 o IR é de 15% e pode deduzir R$ 350
            // De 3751.01 até 4664.00 o IR é de 22.5% e pode deduzir R$ 636

            Console.WriteLine("Opcional: Alíquota com ifs");
            double salario = 1500;
            Console.WriteLine("O salário de João sem dedução é " + salario);

            //ifs aqui
            if (salario <= 2800)
            {
                double IR = 7.5;
                Console.WriteLine("O IR é " + IR + "%");
                salario = salario - 142;
                Console.WriteLine("O salário de João com dedução é " + salario);
            }
            else
            {
                if(salario >= 3751.01)
                {
                    double IR = 15;
                    Console.WriteLine("O IR é " + IR + "%");
                    salario = salario - 350;
                    Console.WriteLine("O salário de João com dedução é " + salario);
                }
                else
                {
                    double IR = 22.5;
                    Console.WriteLine("O IR é " + IR + "%");
                    salario = salario - 636;
                    Console.WriteLine("O salário de João com dedução é " + salario);
                }
            }

            Console.WriteLine("Aperte enter para sair");
            Console.ReadLine();
        }
    }
}
5 respostas

Olá George, como vai?

A estrutura do código ficou excelente. Mas temos um pequeno problema: Digamos que o sálario seja de R$ 3000,00. Pelo seu código ele fará o cálculo com o IR de 22.5%. Concorda?

Aguardo retorno.

Abraços

Olá Ana, vou bem e vc?

Sim, verdade! Entendo ali a troca e um retorno impreciso do cálculo e que para ocorrer correto deve ser:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Opcional_Aliquota_com_Ifs
{
    class Program
    {
        static void Main(string[] args)
        {
            // De 1900.0 até 2800.0 o IR é de 7.5% e pode deduzir R$ 142
            // De 2800.01 até 3751.0 o IR é de 15% e pode deduzir R$ 350
            // De 3751.01 até 4664.00 o IR é de 22.5% e pode deduzir R$ 636

            Console.WriteLine("Opcional: Alíquota com ifs");
            double salario = 3000;
            Console.WriteLine("O salário de João sem dedução é " + salario);

            //ifs aqui
            if (salario <= 2800)
            {
                double IR = 7.5;
                Console.WriteLine("O IR é " + IR + "%");
                salario = salario - 142;
                Console.WriteLine("O salário de João com dedução é " + salario);
            }
            else
            {
                if(salario >= 3751.01)
                {
                    double IR = 22.5;
                    Console.WriteLine("O IR é " + IR + "%");
                    salario = salario - 636;
                    Console.WriteLine("O salário de João com dedução é " + salario);
                }
                else
                {
                    double IR = 15;
                    Console.WriteLine("O IR é " + IR + "%");
                    salario = salario - 350;
                    Console.WriteLine("O salário de João com dedução é " + salario);
                }
            }

            Console.WriteLine("Aperte enter para sair");
            Console.ReadLine();
        }
    }
}
solução!

Fala George blza? Olhando o código, o que a Ana citou acima, acredito que vai cair no mesmo problema. As regras pelo que entendi tem as condições:

// De 1900.0 até 2800.0 o IR é de 7.5% e pode deduzir R$ 142
    // De 2800.01 até 3751.0 o IR é de 15% e pode deduzir R$ 350
    // De 3751.01 até 4664.00 o IR é de 22.5% e pode deduzir R$ 636

Seguindo a risca ali as condições, ficaria:

static void Main(string[] args)
{
    // De 1900.0 até 2800.0 o IR é de 7.5% e pode deduzir R$ 142
    // De 2800.01 até 3751.0 o IR é de 15% e pode deduzir R$ 350
    // De 3751.01 até 4664.00 o IR é de 22.5% e pode deduzir R$ 636

    Console.WriteLine("Opcional: Alíquota com ifs");
    double salario = 1500;
    Console.WriteLine("O salário de João sem dedução é " + salario);

    //ifs aqui
    if ((salario > 1900) && (salario < 2800.01))
    {
        double IR = 7.5;
        Console.WriteLine("O IR é " + IR + "%");
        salario = salario - 142;
        Console.WriteLine("O salário de João com dedução é " + salario);
    }
    else if ((salario > 2800.01) && (salario < 3751.01))
    {
        double IR = 15;
        Console.WriteLine("O IR é " + IR + "%");
        salario = salario - 350;
        Console.WriteLine("O salário de João com dedução é " + salario);
    }
    else if ((salario > 3751.01) && (salario <= 4664))
    {
        double IR = 22.5;
        Console.WriteLine("O IR é " + IR + "%");
        salario = salario - 636;
        Console.WriteLine("O salário de João com dedução é " + salario);
    }

    Console.WriteLine("Aperte enter para sair");
    Console.ReadLine();
}

Mas a estrutura que montou ficou bacana de entender e o código tbm. Flw!

Bom dia George, para acerta a solução ao inves de alterar o bloco de codigo do retorno bastava mudar a comparação no seu segundo IF

//ifs aqui
            if (salario <= 2800)
            {
                double IR = 7.5;
                Console.WriteLine("O IR é " + IR + "%");
                salario = salario - 142;
                Console.WriteLine("O salário de João com dedução é " + salario);
            }
            else
            {
                if(salario <= 3751.01) 
                // se chegou aqui significa que e maior do que 2800 e se entrar significa que e menor que 3751.01 , 
                // se passar significa que e maior 
               // if(salario >= 3751.01)   como estava
                {
                    double IR = 15;
                    Console.WriteLine("O IR é " + IR + "%");
                    salario = salario - 350;
                    Console.WriteLine("O salário de João com dedução é " + salario);
                }
                else
                {
                    double IR = 22.5;
                    Console.WriteLine("O IR é " + IR + "%");
                    salario = salario - 636;
                    Console.WriteLine("O salário de João com dedução é " + salario);
                }
            }

Mas as formas anteriores citadas tambem resolveriam, está e apenas mais uma opção.

Pessoal, olá!

Muito obrigado pelas sugestões e ajustes. Coloquei algumas opções comentadas no meu código para estudo.

Abs,

George