[C/C++] [Problem] Quersumme mit einer if else verschachtelung

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von pneum0re, 29. April 2008 .

Schlagworte:
  1. 29. April 2008
    [Problem] Quersumme mit einer if else verschachtelung

    wir haben ein aufgaben bsp, das programm funktioniert eig auch einwandfrei. nur verstehe ich einfach nicht wie hier die quersumme bei teilsumme 2 berechnet werden soll oO

    Allgemeines Format: z1 z2 z3 z4 z5 z6 z7 z8 z9 (z9 …. Prüfziffer)
    Die Regeln für die Überprüfung einer Kontonummer sind:
    Die Kontonummer ist genau 9 Stellen lang und ist dann richtig, wenn die folgendermaßen gebildete Summe auf
    Null endet: Ziffern mit ungeradem Index werden addiert (= Teilsumme1); Ziffern mit geradem Index werden
    verdoppelt und das jeweilige Produkt addiert, wenn es einstellig ist, andernfalls wird die Quersumme
    des Produkts addiert (= Teilsumme2)
    ; Summe = Teilsumme1 + Teilsumme2
    Berechnungsbeispiel: 123456782 1 + 3 + 5 + 7 + 2 = 18 …. Teilsumme1
    2*2 + 4*2 + (1+2) + (1+6) = 22 …. Teilsumme2
    40 …. Summe mod 10 = Null
    Beispiele für eine Kontonummer:
    697199107 …… richtige Kto.Nr.
    723016689 …… falsche Kto.Nr.

    Code:
     //teilsumme 1 berechnen
     for (Int32 i = 0; i < Nummer.Length; i++)
     {
     Teilsumme1 += Nummer[i] - 48;
     i++;
     }
     //teilsumme 2 berechnen
     for (Int32 j = 1; j < Nummer.Length; j++)
     {
     if ((Nummer[j] - 48) * 2 < 9)
     {
     Teilsumme2 += ((Nummer[j] - 48) * 2);
     }
     else
     {
     Teilsumme2 += ((Nummer[j] - 48) + 1);
     }
     j++;
     }
    wie gesagt ist einfach das problem, dass unsre grenzdebile professorin wieder mal nicht nach denkt bevor sie uns eine hü schreibt ... :angry:
    Ich darf jez wieder sitzen und mir tagelang überlegen wie sie das mit der quersumme meint ...

    in meinen augen setzt diese sich zb bei der zahl 123456782 aus: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 2 zusammen.
    wie soll ich diese aber in einer 2ten teilsumme ermitteln?
     
  2. 29. April 2008
    AW: [Problem] Quersumme mit einer if else verschachtelung

    ich habe das so verstanden das sich die quersumme auf die aktuell zu betrachtende Ziffer bezieht, also im beispiel: Ziffer an 6. Position = "6" -> die "6" wird verdoppelt da Position 6 entspricht dem geraden index -> 6*2=12 davon die Quersumme weil 12>9 ist 1+2=3.

    Genau wie es im Beispiel steht. Und da ja die größt mögliche Zahl 18 ist
    5*2 = 10
    6*2 = 12
    7*2 = 14
    8*2 = 16
    9*2 = 18
    (da die Ziffer maximal 9 sein kann) wird hier

    Code:
    else
     {
     Teilsumme2 += ((Nummer[j] - 48) + 1);
     }
    (wenn ich es richtig deute) das +1 für die Zehnerstelle automatsich dazu addiert. Allerdings bin ich mir nicht sicher ob
    Code:
    (Nummer[j] - 48)
    wirklich die "2" des Ergebnisses "12" (6*2) von oben zurückliefert. Oder nicht einfach die Ziffer an Position 6 also "6". Dafür reichen meine c kenntnisse leider nicht aus.

    EDIT:
    Wenn "( Nummer[j] - 48 )" die Ziffer zurück gibt dann kriegst du die Quersumme so raus:
    ( Nummer[j] - 48 ) * 2 - 9
    Du bildest erst das Ergebniss Bsp 6*2=12
    Dann "extrahierst" du die zweite Ziffer durch 12-10=2
    Dann die Quersumme bilden durch die "1" die immer eine "1" ist 1+2=3
    Dass zusammengefasst ist ( Nummer[j] - 48 ) * 2 - 9
     
  3. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.