# VB.NET book exercise that outputs monthly balances from a fixed amount deposit

Solution for VB.NET book exercise that outputs monthly balances from a fixed amount deposit
is Given Below:

I’m going through practice exercises from a book and am stuck on a particular example. Full disclosure, this is not an assignment or test but merely me practicing through chapters of a book called Introduction to Visual Basic so off the bat, I apologize to those who feel it is a stupid question to ask. The question goes like this,

Suppose a fixed amount of
money is deposited at the beginning of each month into an
investment paying 6% interest compounded monthly. After each

new balance] = 1.005 * [previous balance one month ago] +
[fixed amount].

Write a program that requests the fixed amount of
the deposits as input and displays the balance after each of the
first four deposits.

I am not sure how to approach this question really.

``````  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim amount As Decimal
amount = CDec(txtAmount.Text)
End Sub

Function MonthlyInvestment(amount As Decimal) As Decimal
Dim balance As Decimal = amount
Dim newBalance As Decimal
Dim interestRate As Decimal = 0.06
newBalance = 1.005 * balance + amount
Return newBalance
End Function
End Class
``````

You are using a TextBox control which is not the best option for accepting numeric values. My first suggestion would be to swap that out in favor of a NumericUpDown control. You can find the documentation here: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.numericupdown

After that what you should do is setup a For/Next loop to loop from month 2 (since month 1 is the initial deposit) to month n. Outside of your loop you should declare a variable to hold the current total and inside of your loop, you should do your calculation based on the current total.

Take a look at this example using a NumericUpDown:

``````Dim total = NumericUpDown1.Value
For month = 2 To 4
total = 1.005 * total + NumericUpDown1.Value
Next
``````

Also, quick side-note, `1.005` is not 6 percent. Not sure if that’s a typo in your code.

Here’s an example you can refer to.

``````Private count As Decimal
Private monthCount As Integer = 1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If count = 0 Then
count = CDec(txtAmount.Text)
monthCount += 1
Else
monthCount += 1
End If
End Sub
Function MonthlyInvestment(balance As Decimal) As Decimal
count = 1.005 * balance + CDec(txtAmount.Text)
Return count
End Function
``````

Result of my test. Hi all thank you for your help. I went back and looked at my previous work and indeed as one said, breaking down these problems I was able to see a pattern. This is what I did

```Public Class Form1 Dim balance As Double = 0 'global variable, We need to access it everywhere in the project Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim originalDeposit As Double = CDbl(txtAmount.Text) 'clears the listbox and asaaign 0 to balance when the new blance is being entered lstResults.Items.Clear() balance = 0```

``````'  Option 1 displays results

' Option 2 - displays results

For i As Integer = 1 To 4
lstResults.Items.Add("Month " & i & ": " & newBalance(originalDeposit).ToString("C"))
Next
``````

End Sub
‘calculates new balance. This function is called 4 times. It increase the balance
‘and returns its new value
Function newBalance(originalDeposit As Double) As Double
balance = 1.005 * (balance) + originalDeposit
Return balance
End Function

End Class