Problem bei Berechnung



  • Hallo,
    ich bin ein neuling bei der c-programmierung. bis jetzt klappts ganz gut aber ich habe im moment ein kleines problem...das programm wo ich schreiben sollte funktioniert, aber rechnet falsch und ich hab echt keine ahnung warum...ich hab echt alles versucht was ich bis jetzt weiß...

    int main()
    {
        char Kontonummer [15+1];
        char hilf [2];
        int pz, summe = 0, laenge, i, j = 0, teil, multi = 2;
    
        printf ("Kontonummer: ");
        scanf ("%s", Kontonummer);
        laenge = strlen (Kontonummer);
        i = laenge - 1;
    
        while (i >= 0)
        {
              hilf[0] = Kontonummer[j++];
              teil = atoi(hilf);
              summe = summe + (teil * multi);
              printf ("%i : %i\n\n", teil, summe);
    
              if (multi < 7)
              {
                 multi = multi + 1;
              }
    
                 else
                 {
                     multi = 2;
                 }
    
              i --;
    
      }
    
      summe = summe % 11;
      pz = 11 - summe;
       if (pz >= 10)
       {
              pz = 0;
       }
    
       printf ("Die Pruefziffer lautet: %i \n\n",pz);
    
          system("PAUSE");
          return 0;
    }
    

    Ich gebe bei dem programm ne kontonummer ein und will die prüfziffer dazu berechnen.
    das heißt die einzelnen zahlen aus dem string werden nacheinander mit 2....7 multipliziert, danach fängt man wieder mit 2 an und dann bildet man die summe.
    soweit läuft alles nur bei der der Berechnung der PZ stimmt was nicht.

    gebe ich zum beispiel 3344556 ein kommt als PZ 4 heraus...laut lösung soll es aber 3 sein.
    bei anderen zahlen stimmt es auch nie...es sind immer 1-2 zahlen unterschied. woran kann das liegen?

    danke schonmal und sorry für den langen text.



  • so wie der code da steht kommt einfach das raus was raus kommen soll..

    3344556 => 6,9,16,20,30,35,12 Summ= 128

    128 Modulo 11 = 7

    11- 7= 4

    ich denke mal du hast den geforden PZ calc Algo. nich korrekt umgesetzt

    P.S: Ich würd die schleife so machen

    for(; i>=0; i--){
              summe +=( Kontonummer[j++] * multi); 
              printf ("%i : %i\n\n", Kontonummer[j++], summe); 
              multi = (multi < 7)  ? ++multi : 2;
      }
    

Anmelden zum Antworten