hallo, ich will wiedermal was einfaches wissen. ich habe zwei strings, in denen stehen beliebige zahlen im ASCII format also zum beispiel: string1[0]='2' string1[1]='3' string1[2]='4' string2[0]='1' string2[1]='5' string2[2]='5' ich möcht damit ein bisschen rum rechnen (subtraktion und division), und dann einen ergebnis string haben, mit ASCII zeichen drin. also zum beispiel die beiden subtrahiert (ich möchte jeweils immer die kleiner zahl von der größeren subtrahieren, ich brauche nur positive werte) ergebnis[0]='0' ergebnis[1]='7' ergebnis[2]='9' und dann zum beispiel durch 2 (was mit den zahlen nach dem komma passiert ist mir egal) könnte dann entweder ergebnis[0]='0' ergebnis[1]='3' ergebnis[2]='9' oder ergebnis[0]='0' ergebnis[1]='7' ergebnis[2]='8' rauskommen. nun, ich hab schon den ganzen tag rumprobiert, komm aber auf kein grünen zweig. ich wäre sehr dankbar für jede hilfe, und für jeden tip. MfG Dieter
uups, soll natürlich ergebnis[0]='0' ergebnis[1]='3' ergebnis[2]='9' oder ergebnis[0]='0' ergebnis[1]='3' ergebnis[2]='8' sein.
Hallo Dieter, zunächst einmal solltest Du es Dir vereinfachen und nicht mit ASCII-Zeichen rechnen. Einfacher Pseudocode. Rechnen wie wir es in der Schule gelernt haben. //Zahl ist 432 string1[0]=2 string1[1]=3 string1[2]=4 // Zahl ist 551 string2[0]=1 string2[1]=5 string2[2]=5 Beispiel sehr einfache Addition: uebertrag = 0; for (i=0; i <3; i++) { ergebnis[i] = (string1[i]+ string2[i]+uebertrag)%10; uebertrag = (string1[i]+ string2[i]+uebertrag)/10; } ergebnis[4] = uebertrag; Ausgabe: for (i=4; i >=0; i--) { print(ergebnis[i]+'0'); } Grüße Oliver
Hallo Dieter, doppelte Kapazität erhälst Du, wenn Du die Zahlen jeweils in einem Nibble abspeicherst(gepackte BCD-Zahlen). Beispiel: //Zahl ist 1234 string1[0] = 4; //low nibble string1[0] |= 3<<4; // high nibble string1[1] = 2;//low nibble string1[1] |= 1<<4;// high nibble Mit 2 Byte kann man also schon 4 Zahlen kodieren. Auf diese Art habe ich mal vor Jahren die Fakultät von 2000 berechnet. Die ganze Zahl paßte gerade noch auf ein DIN A4 Blatt. Grüße Oliver
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.