Problem with simple program to compute change

Discussion in 'Meet and Greet' started by dhess62, Jun 16, 2009.

1. dhess62New Member

Joined:
Jun 16, 2009
Messages:
1
0
Trophy Points:
0
This program takes a number of pennies and converts it to dollars, quarters, dimes, nickels and pennies, here is the code that I wrote. The problem is, for some reason it always throws in a nickel when it computes the change for any amount that has a penny in it. Any ideas as to why?

example if you give it 346 pennies will return:
3 Dollars
1 Quarter
2 Dimes
1 Nickel <<<there's the problem
1 Penny

Code:
Private Sub btnCalculateChange_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculateChange.Click
txtNumOfPennies = Convert.ToInt32(Me.txtNumOfPennies.Text)
Me.txtDollar.Text = Int((txtNumOfPennies.Text) / 100)
Me.txtQuarter.Text = Int(((txtNumOfPennies.Text) Mod 100) / 25)
Me.txtDime.Text = Int((((txtNumOfPennies.Text) Mod 100) Mod 25) / 10)
Me.txtNickel.Text = Int((((txtNumOfPennies.Text) Mod 100) Mod 25) Mod 10 / 5)
Me.txtPenny.Text = Int(((((txtNumOfPennies.Text) Mod 100) Mod 25) Mod 10) Mod 5)

Last edited by a moderator: Jun 17, 2009
2. SaswatPadhi~ Б0ЯИ Τ0 С0δЭ ~

Joined:
May 5, 2009
Messages:
1,342
55
Trophy Points:
0
Occupation:
STUDENT !
Location:
Orissa, INDIA
Hi, and Welcome to G4EF ! You have a flaw in the code. You miss a pair of brackets.
Look at this line :

Code:
Me.txtNickel.Text = Int((((txtNumOfPennies.Text) Mod 100) Mod 25) Mod 10 / 5)
As the division operator '/' has higher priority than Mod, The above code simplifies to :

Code:
Me.txtNickel.Text = Int((((txtNumOfPennies.Text) Mod 100) Mod 25) Mod 2)
What you noticed :
is correct. 1 Mod 2 = 1 Mod 5 = 1

So to correct the problem, just change the above line to :

Code:
Me.txtNickel.Text = Int(((((txtNumOfPennies.Text) Mod 100) Mod 25) Mod 10) / 5)