Programmeerprobleem
Geplaatst: di 24 apr 2007, 13:05
Beste mensen,
Ik hoop dat ik met dit probleem in het juiste gedeelte van het forum zit, mocht dit niet het geval dan zijn hoop ik dat de mods zo vriendelijk willen zijn het te verplaatsen.
Ik ben op het internet het onderstaande probleem tegengekomen:
Can you find a five digit number which has no zeros no digit is repeated, where:
The first digit is a prime number.
The second digit is the fifth digit minus the first digit.
The third digit is twice the first digit.
The fourth digit is the third digit plus three.
The fifth digit is the difference between the first digit and the fourth digit.
Ik wilde een programma in vb.net schrijven dat dit 5 cijferige getal vind. Het leek mij verstandig om eerst een functie te schrijven die als argumenten een 5 cijferig getal en een nummer n (1-5) meekrijgt en vervolgens het nde cijfer van dat getal teruggeeft. Mijn functie ziet er zo uit:
Private Function digit(ByVal getal As Integer, ByVal n As Integer) As Integer
Return Int((getal / Math.Pow(10, 6 - n) - Int(getal / Math.Pow(10, 6 - n))) * 10)
End Function
In de meeste gevallen doet deze functie wat hij hoort te doen, soms zit hij er echter naast. Bijvoorbeeld als ik van het getal 15246 het 5de cijfer wil weten (6 dus) dan geeft hij 5 terug. Wat voor mij extra verwarrend is, is dat getal / Math.Pow(10, 6 - n) volgens het programma gelijk is aan 1524,6 en dat Int(getal / Math.Pow(10, 6 - n)) volgens het programma gelijk is aan 1524 maar dat getal / Math.Pow(10, 6 - n) - Int(getal / Math.Pow(10, 6 - n)) gelijk is aan 0,59999999.
Kan iemand mij vertellen wat ik fout doe?
Mvg,
Mark
Ik hoop dat ik met dit probleem in het juiste gedeelte van het forum zit, mocht dit niet het geval dan zijn hoop ik dat de mods zo vriendelijk willen zijn het te verplaatsen.
Ik ben op het internet het onderstaande probleem tegengekomen:
Can you find a five digit number which has no zeros no digit is repeated, where:
The first digit is a prime number.
The second digit is the fifth digit minus the first digit.
The third digit is twice the first digit.
The fourth digit is the third digit plus three.
The fifth digit is the difference between the first digit and the fourth digit.
Ik wilde een programma in vb.net schrijven dat dit 5 cijferige getal vind. Het leek mij verstandig om eerst een functie te schrijven die als argumenten een 5 cijferig getal en een nummer n (1-5) meekrijgt en vervolgens het nde cijfer van dat getal teruggeeft. Mijn functie ziet er zo uit:
Private Function digit(ByVal getal As Integer, ByVal n As Integer) As Integer
Return Int((getal / Math.Pow(10, 6 - n) - Int(getal / Math.Pow(10, 6 - n))) * 10)
End Function
In de meeste gevallen doet deze functie wat hij hoort te doen, soms zit hij er echter naast. Bijvoorbeeld als ik van het getal 15246 het 5de cijfer wil weten (6 dus) dan geeft hij 5 terug. Wat voor mij extra verwarrend is, is dat getal / Math.Pow(10, 6 - n) volgens het programma gelijk is aan 1524,6 en dat Int(getal / Math.Pow(10, 6 - n)) volgens het programma gelijk is aan 1524 maar dat getal / Math.Pow(10, 6 - n) - Int(getal / Math.Pow(10, 6 - n)) gelijk is aan 0,59999999.
Kan iemand mij vertellen wat ik fout doe?
Mvg,
Mark