Mollfred
Cadet 3rd Year
- Registriert
- Mai 2013
- Beiträge
- 43
So ich hab mich heute daran gemacht mit String Operationen zu Arbeiten es geht darum in 3 Sätzen Bestimmte Wörter zu ersetzen.
Hier die Beispiele:
"Mein schwarzes Auto ist schoen". Soll zu "Mein Blaues Auto ist schoen" werden.
"Mein blaues Auto und Karins blaues Motorrad sind schoen." Soll zu "Mein schwarzes und Karins schwarzes Motorad sind schoen." werden.
Bis hier her hab ich kein Problem aber das dritte Beispiel lässt mich zweifeln ob man das überhaupt lösen kann, zumindest schein ich dafür den falschen Lösungsansatz zu verfolgen.... das Beispiel ist:
"Mein rotes Auto ist schoen." und das soll zu "Mein gruen-rotes Auto ist schön werden".
Was bei mir dazu führt das ich in meiner While Schleife in einen Endlos Loop gerate und das Programm hängen bleibt hier mein Code:
hat jemnd eine Idee wie ich das lösen könnte?
Das Problem ist ja das das gruen-rot, auch wieder ein rot speichert und ich deshalb die schleife weiter und weiter durch laufe....
Hier die Beispiele:
"Mein schwarzes Auto ist schoen". Soll zu "Mein Blaues Auto ist schoen" werden.
"Mein blaues Auto und Karins blaues Motorrad sind schoen." Soll zu "Mein schwarzes und Karins schwarzes Motorad sind schoen." werden.
Bis hier her hab ich kein Problem aber das dritte Beispiel lässt mich zweifeln ob man das überhaupt lösen kann, zumindest schein ich dafür den falschen Lösungsansatz zu verfolgen.... das Beispiel ist:
"Mein rotes Auto ist schoen." und das soll zu "Mein gruen-rotes Auto ist schön werden".
Was bei mir dazu führt das ich in meiner While Schleife in einen Endlos Loop gerate und das Programm hängen bleibt hier mein Code:
Code:
#include <iostream>
#include <string>
#include "stringOperations.h"
using namespace std;
int ersetzungen = 0;
void myreplace (string &text, const string &findString, const string &replaceString);
int replaceTest()
{
string text1 = "Mein schwarzes Auto ist schoen.";
cout << "\nAlter Text: " << text1 << endl;
myreplace(text1, "schwarzes", "blaues");
cout << "Neuer Text: " << text1 << endl;
cout << "Wort Ersetzungen: " << ersetzungen << "\n"<<endl;
string text2 = "Mein blaues Auto und Karins blaues Motorrad sind schoen.";
cout << "Alter Text: " << text2 << endl;
myreplace(text2, "blau", "schwarz");
cout << "Neuer Text: " << text2 << endl;
cout << "Wort Ersetzungen: " << ersetzungen<< "\n" <<endl;
string text3 = "Mein rotes Auto ist schoen.";
cout << "Alter Text: " << text3 << endl;
myreplace(text3, "rot", "gruen-rot");
cout << "Neuer Text: " << text3 << endl;
cout << "Wort Ersetzungen: " << ersetzungen<< "\n" <<endl;
return 0;
}
void myreplace( string &text, const string &findString, const string &replaceString )
{
int x = 0;
ersetzungen= 0;
while( text.find( findString, x ) < text.length() )
{
text.replace( text.find( findString, x ), findString.length(), replaceString );
x++; ersetzungen++;
}
}
hat jemnd eine Idee wie ich das lösen könnte?
Das Problem ist ja das das gruen-rot, auch wieder ein rot speichert und ich deshalb die schleife weiter und weiter durch laufe....
Zuletzt bearbeitet: