• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

R0t3nSkull

[Resolvido] Calculadora de Imposto

6 mensagens neste tópico

Boas, mais uma vez venho pedir o vosso auxilio. Estou a fazer uma calculadora de imposto muito básica que após a introdução do estado civil e do rendimento bruto anual, ele diz-me o imposto a pagar. Agora é que as coisas se complicam, o código está todo feito e funcional excepto quando eu digito um valor decimal no rendimento.... :S Alguém me pode ajudar? Obrigado  :)

                      Solteiros

                     

Menor ou igual | Maior | Taxa de Imposto

21450                    -                  15%

51900                    -                  28%

    -                    51900              31%

                      Casados

                     

Menor ou igual | Maior | Taxa de Imposto

35800                    -                  15%

86500                    -                  28%

    -                    86500              31%

Module Module1

    Sub Main()

        Imposto()

    End Sub

    Sub Imposto()

        'Variáveis

        Dim estado_civil As String
        Dim rend As Double
        Dim imp As Integer
        Const taxa1 As Single = 0.15
        Const taxa2 As Single = 0.28
        Const taxa3 As Single = 0.31

        Console.WriteLine("Qual é o seu estado civil? (Solteiro/Casado)")
        estado_civil = Console.ReadLine()

        'Solteiro

        If estado_civil = "Solteiro" Then

            Console.WriteLine("Qual é o seu rendimento? ")
            rend = Console.ReadLine()


            Select Case rend

                Case Is <= 21450

                    imp = rend * taxa1

                Case 21450.01 To 51900

                    imp = rend * taxa2


                Case Is > 51900.01

                    imp = rend * taxa3



            End Select

        ElseIf estado_civil = "Casado" Then

            Console.WriteLine("Qual é o seu rendimento? ")
            rend = Console.ReadLine()

            Select Case rend
                Case Is <= 35800

                    imp = rend * taxa1

                Case 35800.01 To 86500

                    imp = rend * taxa2

                Case Is > 86500

                    imp = rend * taxa3


            End Select

        End If


        Console.WriteLine("O Valor do imposto é: " & imp)
        Console.ReadLine()

    End Sub

End Module

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Mete um novo Case no início:

Select Case rend

    Case Is 0

        imp = 0

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

continua a não dar, mas obrigado na mesma. o facto é quando eu meto um valor decimal, aquildo dá me um valor maior do que o proprio rendimento o que não pode ser. :s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então explica lá melhor o problema ...

Mas a variável imp não devia der Integer mas sim Double

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é assim este problema serve para calcular a taxa de IRS a pagar no fim do ano depois de introduzidos o estado civil e o salario bruto anual.

o programa funciona, mas quando introduzo salarios brutos decimais (Ex. 2341,50)€ o programa passa-se, dá me sempre um valor superior ao rendimento :)

Obrigado pela ajuda jpaulino

EDIT: Já percebi o problema, quando tava a correr o programa, estava a por 2343.02€ e não 2324,02€

ou seja o problema é da virgula.

Obrigado na mesma :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, já entendi!

Isso depende da configuração do PC (definições regionais) em que o separador decimal é o ponto "." ou a virgula ",".

Se fizeres 2341.50 dá bem porque o teu separador decimal é o ponto.

Não te esqueças de alterar a variável para double!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora