Archiv verlassen und diese Seite im Standarddesign anzeigen : Quersumme berechnen
worldwind
05.07.2010, 16:04
Kann mir jemand erklären, wie ich mit Bascom am Besten die Quersumme von z.B. 1234 berechne? Die Zahl liegt als Integer vor.
Du musst erst in einen string umwandeln und dann die zahlen zusammenzählen.
worldwind
05.07.2010, 17:11
Das habe ich befürchtet.
Also: Zahl in String umwandeln
String in Ziffern aufteilen
Ziffern addieren
und wieder in Integer zurückwandeln
Besserwessi
05.07.2010, 17:54
Wenn man die Umwandlung in die Dezimaldarstellung von Hand macht, braucht man den String nicht. Man bekommt immer nur ein Stelle zur Zeit und addiert die dann auf.
Viel einfacher wird es damit aber auch nicht.
Che Guevara
05.07.2010, 17:58
dim zahl as integer
dim tmpstr as string * 5
dim tmpint as integer
zahl = 1234
tmpstr = str(zahl)
tmpint = val(mid(tmpstr,1,1)) + val(mid(tmpstr,2,1)
tmpint = tmpint + val(mid(tmpstr,3,1)
tmpint = tmpint + val(mid(tmpstr,4,1)
ferdisch ;)
Das Ganze ginge natürlich auch ohne String, nur mit Zahlen ;)
Wenn dus wissen willst wie, einfach fragen
Gruß
Chris
Dim qs As Byte ' enthält am Ende die Quersumme
qs = 0
while zahl > 0 do
qs = qs + zahl MOD 10
zahl = zahl / 10
wend
MfG Mark
Sauerbruch
06.07.2010, 20:03
Elegant, elegant mit dem "MOD 10"!
Die folgende Zeile ist allerdings zumindestens bei meinem Bascom ( 1.11.8.8 ) ein Problem (wohl wegen zu vieler Operationen auf einmal):
qs = qs + zahl MOD 10
Außerdem wird die While-Wend-Schleife wohl nie verlassen werden, denn wie oft man die Variable "Zahl" auch immer durch 10 teilt - sie wird nie kleiner als 0 werden!
Ich habe den Code mal etwas umgestellt und ihn im Simulator mit allen möglichen Zahlen durchprobiert - so funktioniert es:
...
...
Dim Qs As Byte
Dim Rest As Byte
Qs = 0
While Zahl > 9
Rest = Zahl Mod 10
Qs = Qs + Rest
Zahl = Zahl / 10
Wend
Qs = Qs + Zahl
...
...
(Qs ist auch hier die Quersumme).
Gruß an alle Quersummen-Fans,
Daniel
Hallo Sauerbruch,
denn wie oft man die Variable "Zahl" auch immer durch 10 teilt - sie wird nie kleiner als 0 werden!
kleiner 0 war nicht verlangt.
9/10 = 0 Rest 9
Damit ist Zahl nicht > 0 und die Bedingung somit erfüllt.
Gruß, Michael
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.