R0t3nSkull Posted November 28, 2008 at 05:55 PM Report #229346 Posted November 28, 2008 at 05:55 PM 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
jpaulino Posted November 28, 2008 at 07:16 PM Report #229380 Posted November 28, 2008 at 07:16 PM Olá, Mete um novo Case no início: Select Case rend Case Is 0 imp = 0
R0t3nSkull Posted November 28, 2008 at 07:51 PM Author Report #229391 Posted November 28, 2008 at 07:51 PM 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
jpaulino Posted November 28, 2008 at 08:22 PM Report #229400 Posted November 28, 2008 at 08:22 PM Então explica lá melhor o problema ... Mas a variável imp não devia der Integer mas sim Double
R0t3nSkull Posted November 28, 2008 at 08:33 PM Author Report #229402 Posted November 28, 2008 at 08:33 PM é 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 😛
jpaulino Posted November 28, 2008 at 08:50 PM Report #229408 Posted November 28, 2008 at 08:50 PM 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!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now