Strings addieren?



  • Hi ich will einen String als eingabe einlese und jede einzelne Zahl davon miteinander zur Summe addieren. Also bspweise:

    123456 ist eingabe
    und diese soll dann 1+2+3+4+5+6=21 Herausgeben.

    int main() {
    
    char ean[13];
    int i ;
    int erg;
    int code;
    
    gets(ean);
    
    system("PAUSE");
    return 0;
    }
    

    so nur ist Char ja nicht wirklich addierbar oder?



  • ungefähr so:

    int add_digits (char *s)
    {
      int sum = 0;
      while (*s)
        sum += *s++ -'0';
      return sum;
    }
    

    ^^ungetestet.
    🙂



  • sorry aber dieses *s sagt mir atm noch gar nix und kann damit auch recht wenig anfangen 😞



  • int main() {
    
    char ean[13];
    int i ;
    int sum=0;
    int code=0;
    
    gets(ean);
    printf("Dein eingegebener EAN Code ist %s\n",ean);
    
    for(i=0;i<13;i++)
    sum=sum+ean[i];
    printf("%d",sum);
    
    system("PAUSE");
    return 0;
    }
    

    Habs jetzt mal so aber die Summe gibt ein übelsten Müll raus 😡



  • Szimo schrieb:

    sorry aber dieses *s sagt mir atm noch gar nix und kann damit auch recht wenig anfangen

    das ist ein 'char-pointer', der muss auf die anfangsadresse des strings zeigen. probier mal: printf ("%d\n", add_digits ("123456")); <-- sollte 26 rauskommen.
    🙂



  • ;fricky schrieb:

    printf ("%d\n", add_digits ("123456")); <-- sollte 26 rauskommen.
    🙂

    26? Ja, in Bizarro-World vielleicht... 😃



  • Deine Variante würde so modifiziert funktionieren:

    for(i=0;i<13;i++) {
    	if(ean[i]==0) break;
    	sum=sum+(ean[i]-'0');
    }
    

    Ist vielleicht verständlicher für dich als fricky's Variante. Aber früher oder später musst du dich mal mit Pointern (das böse 😉 auseinandersetzen.



  • _matze schrieb:

    ;fricky schrieb:

    printf ("%d\n", add_digits ("123456")); <-- sollte 26 rauskommen.
    🙂

    26? Ja, in Bizarro-World vielleicht...

    nee, funzt. ich hab's gerade ausprobiert.
    🙂



  • ;fricky schrieb:

    _matze schrieb:

    ;fricky schrieb:

    printf ("%d\n", add_digits ("123456")); <-- sollte 26 rauskommen.
    🙂

    26? Ja, in Bizarro-World vielleicht...

    nee, funzt. ich hab's gerade ausprobiert.
    🙂

    Er hat darauf angespielt, dass 1+2+3+4+5+6, nicht 26 sondern 21 sind.



  • ;fricky schrieb:

    _matze schrieb:

    ;fricky schrieb:

    printf ("%d\n", add_digits ("123456")); <-- sollte 26 rauskommen.
    🙂

    26? Ja, in Bizarro-World vielleicht...

    nee, funzt. ich hab's gerade ausprobiert.
    🙂

    Das bezweifle ich nicht, aber 1+2+3+4+5+6 = 21. 🤡



  • sunny31Bahadoorifar schrieb:

    Er hat darauf angespielt, dass 1+2+3+4+5+6, nicht 26 sondern 21 sind.

    aber fast.
    🙂



  • ;fricky schrieb:

    sunny31Bahadoorifar schrieb:

    Er hat darauf angespielt, dass 1+2+3+4+5+6, nicht 26 sondern 21 sind.

    aber fast.
    🙂

    Na ja, meine Programme tun auch immer nur fast das, was sie sollen, insofern akzeptiere ich das mal so. 😃 😉


Anmelden zum Antworten