Du musst erst in einen string umwandeln und dann die zahlen zusammenzählen.
Du musst erst in einen string umwandeln und dann die zahlen zusammenzählen.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Das habe ich befürchtet.
Also: Zahl in String umwandeln
String in Ziffern aufteilen
Ziffern addieren
und wieder in Integer zurückwandeln
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.
ferdischCode: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)
Das Ganze ginge natürlich auch ohne String, nur mit Zahlen
Wenn dus wissen willst wie, einfach fragen
Gruß
Chris
MfG MarkCode: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
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):
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!Code:qs = qs + zahl MOD 10
Ich habe den Code mal etwas umgestellt und ihn im Simulator mit allen möglichen Zahlen durchprobiert - so funktioniert es:
(Qs ist auch hier die Quersumme).Code:... ... 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 ... ...
Gruß an alle Quersummen-Fans,
Daniel
Hallo Sauerbruch,
kleiner 0 war nicht verlangt.denn wie oft man die Variable "Zahl" auch immer durch 10 teilt - sie wird nie kleiner als 0 werden!
9/10 = 0 Rest 9
Damit ist Zahl nicht > 0 und die Bedingung somit erfüllt.
Gruß, Michael
Lesezeichen