-
19.10.11 15:57 #1
- Registriert seit
- Jul 2011
- Beiträge
- 63
Hey Leute ich hab einen Taschenrechner programmiert nur habe ich jetzt ein kleines Problem.

Ich kann den Inhalt zweier eines Strings nicht addieren ich poste mal den Code vlt. kann mir ja wer helfen.
Code :1
ergebnis = str_aufgabe[0]) + str_aufgabe[2];
Wenn ich das mache kommt 99 raus was ASCII mäßig ja auch richtig ist. Meine Rechenoperation ist 1+2 und 1 is in ASCII 49 und 2 50 aber wie ändere ich das wieder in Dezimalzaheln um****
-
Hallo,
Ich würde die Zahlen in integer format umwandeln (strtol) und erst dann zusammenrechnen. Zum Anzeigen wieder in String umwandeln.
mfg. posi90
-
Hi
wenn es nur für einzelne Ziffern bleibt: Rechne am Anfang einfach '0' bei beiden Ziffern weg und nach dem Addieren wieder dazu. Oder einfach nach dem Addieren zweimal abziehen.
Wenn es längere Zahlen werden: sscanf doer atoi.Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
19.10.11 16:05 #4
- Registriert seit
- Jul 2011
- Beiträge
- 63
Und wie funktioniet diese Funktion.
Geht das den nicht, dass ich einfach auf den Inhalt des Strings an dieser Position zugreife?
-
Doch, das tust du ja

Code cpp:1
ergebnis = str_aufgabe[0] + str_aufgabe[2] - 2*'0';
Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
19.10.11 16:14 #6
- Registriert seit
- Jul 2011
- Beiträge
- 63
DANKE für die schnelle Hilfe.
Funktioniert wunderbar :-D
Ich habs so gemacht jetzt:
Code :1
ergebnis = str_aufgabe[0] - '0' + str_aufgabe[2] - '0';
-
Stimmt natürlich, zweimal...mein Fehler.
Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
19.10.11 16:20 #8
- Registriert seit
- Jul 2011
- Beiträge
- 63
Macht eh nichts ein bisschen muss ich selber ja auch dazu beitragen oder? :-D
DANKE nochmal
-
21.10.11 13:11 #9
- Registriert seit
- Jul 2011
- Beiträge
- 63
So jetzt hab ich noch ein Problem

Wenn ich 1+2 rechne kommt 3 raus passt alles.
Aber wenn ich 10+12 rechne schreibt er ja 1 in str_aufgabe[0] und 0 in str_aufgabe[1] hinein wie soll ich das am besten machen, dass ich er das richtig rechnet?
-
Wie schon geschrieben: atoi, sscanf...
Zwischen den Zahlen ist vermutlich ein Rechenzeichen wie + - * / und so?
Hast du später auch vor, längere Rechnungen wie
(1 + 2) * 3 / (4^2)
zu verarbeiten, oder solls immer bei
Zahl Rechenzeichen Zahl
bleiben?Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
21.10.11 13:40 #11
- Registriert seit
- Jul 2011
- Beiträge
- 63
Im Moment solls einmal nur bei Zahl Rechenzeichen bleiben.
Ich machs in c++.
-
Such zuerst die Position des Rechenzeichens (int x im Code, Eingabestring ist eingabe) und speicher das Zeichen irgendwo separat.
Dann:
Code cpp:1 2 3 4 5 6 7
int zahl1, zahl2; eingabe[x]=' '; if(2 != sscanf(eingabe, "%d %d", &zahl1, &zahl2)) { //Fehler } //Sonst OK, zahl1 und zahl2 gefüllt.
GrußNetiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
21.10.11 14:27 #13
- Registriert seit
- Jul 2011
- Beiträge
- 63
Warum überprüfst du ob 2 != sscanf ist ?
Und mit welcher funktion bestimme ich die Position meines Strings?Geändert von MrCodeMaster (21.10.11 um 15:12 Uhr)
-
(f-, s-, bla-) scanf: Soll 2 mal %d, also 2 Integer, einlesen.
Und der Returnwert ist immer die Anzahl der Variablen, die erfolgreich eingelesen wurde.
Bei 2 Ints ist Returnwert 2 ideal, sonst hats Probleme gegeben.
Steht aber auch in jeder Referenz..
Und zur Position:
Zuerst gehst du in einer Schleife jedes Ziechen der Eingabe durch und prüfst, ob ein '+' dabei ist.
Wenn ja: Das wievielte Zeichen ist es? Das ist die Position.
Wenn keins dabei war, suchst du auf die selbe Art nach '-' usw...Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
21.10.11 15:35 #15
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Oder du verwendest ebenfalls sscanf dafür:
GrußCode c:1 2 3 4 5 6 7 8 9
int a, b; char op[2]; if (3 == sscanf(eingabe, "%d %1[+-*/]%d", &a, op, &b)) { ... } else { // Fehler ... }
Geändert von deepthroat (21.10.11 um 15:38 Uhr)
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Ähnliche Themen
-
String Inhalt vergleichen
Von Java_Anfänger im Forum JavaAntworten: 9Letzter Beitrag: 27.09.07, 11:12 -
String-Adresse anstatt String-Inhalt wird ausgegeben
Von dastool im Forum JavaAntworten: 5Letzter Beitrag: 08.03.06, 01:44 -
String auf bestimmten Inhalt überprüfen, WIE?
Von lukasulrich im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 10.06.05, 16:51 -
hilfe zum addbefehl wie addiere einzlene werte mit indizis
Von josefhader im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 17.08.04, 15:51 -
[c++] String-Inhalt prüfen
Von schiieech im Forum C/C++Antworten: 4Letzter Beitrag: 10.02.04, 10:52



4Danke

Zitieren


Login






