- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 8 von 8

Thema: Quersumme berechnen

  1. #1
    Neuer Benutzer
    Registriert seit
    05.07.2010
    Ort
    Wr. Neustadt
    Beiträge
    3

    Quersumme berechnen

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Kann mir jemand erklären, wie ich mit Bascom am Besten die Quersumme von z.B. 1234 berechne? Die Zahl liegt als Integer vor.

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Du musst erst in einen string umwandeln und dann die zahlen zusammenzählen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer
    Registriert seit
    05.07.2010
    Ort
    Wr. Neustadt
    Beiträge
    3
    Das habe ich befürchtet.
    Also: Zahl in String umwandeln
    String in Ziffern aufteilen
    Ziffern addieren
    und wieder in Integer zurückwandeln

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    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.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    Beiträge
    1.578
    Code:
    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

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.03.2006
    Ort
    Darmstadt
    Alter
    33
    Beiträge
    522
    Code:
     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

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    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):

    Code:
    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:

    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
    ...
    ...
    (Qs ist auch hier die Quersumme).

    Gruß an alle Quersummen-Fans,

    Daniel

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    54
    Beiträge
    1.258
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad