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

R0t3nSkull

[Resolvido] Calculadora de Imposto

Recommended Posts

R0t3nSkull

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

Share this post


Link to post
Share on other sites
R0t3nSkull

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

Share this post


Link to post
Share on other sites
jpaulino

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

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

Share this post


Link to post
Share on other sites
R0t3nSkull

é 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

Share this post


Link to post
Share on other sites
jpaulino

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!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.