String Inhalt addiere

Such zuerst die Position des Rechenzeichens (int x im Code, Eingabestring ist eingabe) und speicher das Zeichen irgendwo separat.
Dann:
C++:
int zahl1, zahl2;
eingabe[x]=' ';
if(2 != sscanf(eingabe, "%d %d", &zahl1, &zahl2))
{
    //Fehler
}
//Sonst OK, zahl1 und zahl2 gefüllt.

Gruß
 
Warum überprüfst du ob 2 != sscanf ist ?

Und mit welcher funktion bestimme ich die Position meines Strings?
 
Zuletzt bearbeitet von einem Moderator:
(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..:google:

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...
 
(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..:google:

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...
Oder du verwendest ebenfalls sscanf dafür:
C:
int a, b;
char op[2];

if (3 == sscanf(eingabe, "%d %1[+-*/]%d", &a, op, &b)) {
  ...
} else {
  // Fehler
  ...
}
Gruß
 
Zuletzt bearbeitet:
So hier ist jetzt mal mein Code:
C++:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <string>

using namespace std;

int main()
{
	char str_aufgabe[1000];
	int x = 0, y = 0, z = 0;
	int ergebnis;

	cout << "Bitte Rechenoperation eingeben: " << endl;
	
	while(z < 1001) 
	{
		if(z == 7)
			break;

		cin >> str_aufgabe[x];

		x++;
		z++;

	}

	x = 0;
	while(y < 1001)
	{
		if(str_aufgabe[x] == '+')
		{
			cout << "'+' gefunden! Es ist an Position "<< x << "\n";
			break;
		}
		x++;
		y++;
	}

	break;

	system("PAUSE");
	return 0;
}

Es gibt zwei Probleme die ich habe. Die erste while-Schleife funktioniert nur mit der If-Abfrage. Hab keine Ahnung warum. Kannst du mir sagen warum****

Und das mit dem zusammenrechnen hab ich noch immer nicht ganz verstanden.
 
Zuletzt bearbeitet von einem Moderator:
Schleife: Weil du immer Einzelbuchstaben einliest...lies doch den ganzen String ein.
C++:
cin >> str_aufgabe;

Zum Rest: Rück doch bitte ordentlich ein...oder wart kurz, ich machs.

edit:
So.
Was hat das break kurz vor Schluss da zu suchen?
Und hast du den Post von deepthroat gesehen?

Ich schreibs schnell um...

edit2:
C++:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <string>

using namespace std;

int main()
{
	char str_aufgabe[1024];
	int i, j;
	char rzeichen[2];

	cout << "Bitte Rechenoperation eingeben: " << endl;
	cin >> str_aufgabe;

	if(3 != sscanf(str_aufgabe, "%d %1[+-*/]%d", &i, rzeichen, &j))
	{
		cout << "Fehler" << endl;
	}
	else
	{
		//if *rzeichen == + dann plusrechnen usw...
	}

	system("PAUSE");
	return 0;
}
 
Ja hab ich gesehen.

Das break is falsch da war eigentlich eine else anweisung und dazu gehört es.
 
Zurück