Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.cpp
- //
- #include <iostream>
- #include <string>
- #include "zkette.h"
- using namespace std;
- int main() {
- string text = "",
- zkette = "";
- cout << "Bitte geben Sie den Text ein: ";
- getline(cin, text);
- cout << "Bitte geben Sie die zu suchende Zeichenkette ein: ";
- getline(cin, zkette);
- zeichenkette_suchen_rekursiv(text, zkette);
- return 0;
- }
- //
- // zkette.h
- //
- #pragma once
- #include <string>
- using namespace std;
- int zeichenkette_suchen_rekursiv (string text, string zkette, unsigned int text_pos = 0, unsigned int text_such_pos = 0, unsigned int zkette_such_pos = 0);
- //
- // zkette.cpp
- //
- #include <iostream>
- #include <string>
- #include "zkette.h"
- using namespace std;
- int zeichenkette_suchen_rekursiv (string text, string zkette, unsigned int text_pos, unsigned int text_such_pos, unsigned int zkette_such_pos)
- {
- // Falls Treffer und ...
- if (text.at(text_such_pos) == zkette.at(zkette_such_pos))
- {
- // ...das Ende der zu suchenden Zeichenkette erreicht
- if (zkette_such_pos+1 == zkette.length())
- {
- cout << "Die Zeichenkette \'" << zkette << "\' ist in dem Text \'" << text << "\' enthalten." << endl
- << "Sie startet ab Zeichen " << text_pos << " (bei Zaehlung ab 0)." << endl;
- return 1;
- }
- // ...das Ende der zu suchenden Zeichenkette noch nicht erreicht
- else
- // Diese Funktion noch mal mit neuen Positionen/Werten aufrufen um weiter zu suchen
- return zeichenkette_suchen_rekursiv(text, zkette, text_pos, text_such_pos+1, zkette_such_pos+1);
- }
- else
- {
- // Falls zu suchende Zeichenkette nicht mehr in den uebrigen Text passt
- if (text_pos + zkette.length() - 1 == text.length())
- {
- cout << "Die Zeichenkette \'" << zkette << "\' ist NICHT in dem Text \'" << text << "\' enthalten." << endl;
- return 0;
- }
- // Falls das Ende der zu suchenden Zeichenkette noch nicht erreicht wurde
- else if (zkette_such_pos+1 != zkette.length())
- return zeichenkette_suchen_rekursiv(text, zkette, text_pos+1, text_pos+1, 0);
- }
- // Damit beim Compilieren keiner meckert noch einen Rueckgabewert mitgeben
- // Grund fuers Meckern: Ein Rueckgabewert wurde zu Anfang definiert: int zeichenkette_suchen_rekursiv (...) {...}
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement