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.
