4
respostas

Escrevi de uma forma diferente, relatando ao usuário, os dados!

using System;

namespace rascunho_aliquotaIR { class Program { static void Main(string[] args) { Console.WriteLine("Aliquota IR");

        double salario = 4300.00;
        double salarioFinal;


        if (salario >= 1900.00 && salario <= 2800.00)
        {
            double aliquota1 = 7.5 / 100;
            salarioFinal = salario * (1 - aliquota1 / 100);

            Console.WriteLine("Sua aliquota é " + aliquota1 * 100 + "%");
            Console.WriteLine("Sua dedução foi de R$" + salario * aliquota1);
            Console.WriteLine("Seu salario final é: R$" + salarioFinal);


        }
        else if (salario > 2800.01 && salario < 3751.00)
        {
            double aliquota2 = 15 / 100;
            salarioFinal = salario * (1 - aliquota2);

            Console.WriteLine("Sua aliquota é " + aliquota2 * 100 + "%");
            Console.WriteLine("Sua dedução foi de R$" + salario * aliquota2);
            Console.WriteLine("Seu salario final é: R$" + salarioFinal);

        }

        else if (salario > 3751.01 && salario <= 4664.00)
        {
            double aliquota3 = 22.5 / 100;
            salarioFinal = salario * (1 - aliquota3);

            Console.WriteLine("Sua aliquota é " + aliquota3 * 100 + "%");
            Console.WriteLine("Sua dedução foi de R$" + salario * aliquota3);
            Console.WriteLine("Seu salario final é: R$" + salarioFinal);

        }
    }
}

}

4 respostas

Boa Tarde Guilherme, muito bom o código, porém tenho uma observação. Quando o valor do salário for maior que 4664.00 o sistema não trataria, então se existir a possibilidade de ter uma entrada de valor maior ( ou seja, um salário maior) é recomendado criar uma condição para trata-la, caso todo salario acima de 3751.00 tenha aliquota de 22.5, basta voce remover a parte da condição do if:

// era 
else if (salario > 3751.01 && salario <= 4664.00)
 {
 }
 //ficaria 
else if (salario > 3751.01)
{
}

Olá Bruno!!

obrigado pela observação, eu segui os dados sugeridos no exercício do professor! vou complementá-la com as outras aliquotas, ficou faltando a última faixa, 27,5% e daria para acrescentar a faixa isenta!

obrigado!

Ficou assim: só não entendi pq qd executo valores maiores de 4700... aparece na alíquota 27,500000000004%

using System;

namespace rascunho_aliquotaIR { class Program { static void Main(string[] args) { Console.WriteLine("Aliquota IR");

        double salario = 1300;
        double salarioFinal;

        if (salario < 1900.00)
        {
            Console.WriteLine("Você está isento.");
            Console.WriteLine("Seu salario é R$" + salario);
        }
        else if (salario >= 1900.01 && salario <= 2800.00) 
        {
            double aliquota1 = 7.5 / 100;
            salarioFinal = salario * (1 - aliquota1 / 100);

            Console.WriteLine("Sua aliquota é " + aliquota1 * 100 + "%");
            Console.WriteLine("Sua dedução foi de R$" + salario * aliquota1);
            Console.WriteLine("Seu salario final é: R$" + salarioFinal);


        }
        else if (salario > 2800.01 && salario < 3751.00)
        {
            double aliquota2 = 15 / 100;
            salarioFinal = salario * (1 - aliquota2);

            Console.WriteLine("Sua aliquota é " + aliquota2 * 100 + "%");
            Console.WriteLine("Sua dedução foi de R$" + salario * aliquota2);
            Console.WriteLine("Seu salario final é: R$" + salarioFinal);

        }
        else if (salario > 3751.01 && salario <= 4664.00)
        {
            double aliquota3 = 22.5 / 100;
            salarioFinal = salario * (1 - aliquota3);

            Console.WriteLine("Sua aliquota é " + aliquota3 * 100 + "%");
            Console.WriteLine("Sua dedução foi de R$" + salario * aliquota3);
            Console.WriteLine("Seu salario final é: R$" + salarioFinal);

        }
        else if (salario > 4664.00)
        {
            double aliquota4 = 27.5 / 100;
            salarioFinal = salario * (1 - aliquota4);

            Console.WriteLine("Sua aliquota é " + aliquota4 * 100 + "%");
            Console.WriteLine("Sua dedução foi de R$" + salario * aliquota4);
            Console.WriteLine("Seu salario final é: R$" + salarioFinal);
        }
    }
}

}

show de bola, sobre sua duvido qunto as varias casas dicimais pos a virgula, o double tem uma precisao maior no retorno. Exemplo se voce dividir 2 valores e tentar guarar em uma variavel de int(inteiro) e essa divisao um valor de 2,5 a variavel vai guardar o valor 2 pois a precisao dela é inteira, no float ela ja tem uma precisao maior trazendo mais casa decimais por virgulas, no double é a mesma coisa. Porém é possivel "obrigar" o retorno com 2 casas decimais por exemplo, isso voce vera mais a frente no curso como formatar para se ter o padrao desejado.

Muito obrigado Bruno! show, ficou bem melhor depois que fiz os incrementos!

E obrigado tb pelas informações!