Advertisement
t__jay

Praktikumsaufgabe 9-02 (2016/2017)

Dec 6th, 2016
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.41 KB | None | 0 0
  1. //
  2. // main.cpp
  3. //
  4. #include <iostream>
  5. #include <string>
  6. #include "zkette.h"
  7.  
  8. using namespace std;
  9.  
  10. int main() {
  11.     string text   = "",
  12.            zkette = "";
  13.  
  14.     cout << "Bitte geben Sie den Text ein: ";
  15.     getline(cin, text);
  16.  
  17.     cout << "Bitte geben Sie die zu suchende Zeichenkette ein: ";
  18.     getline(cin, zkette);
  19.  
  20.     zeichenkette_suchen_rekursiv(text, zkette);
  21.  
  22.     return 0;
  23. }
  24.  
  25. //
  26. // zkette.h
  27. //
  28. #pragma once
  29.  
  30. #include <string>
  31.  
  32. using namespace std;
  33.  
  34. 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);
  35.  
  36. //
  37. // zkette.cpp
  38. //
  39. #include <iostream>
  40. #include <string>
  41. #include "zkette.h"
  42.  
  43. using namespace std;
  44.  
  45. int zeichenkette_suchen_rekursiv (string text, string zkette, unsigned int text_pos, unsigned int text_such_pos, unsigned int zkette_such_pos)
  46. {
  47.     // Falls Treffer und ...
  48.     if (text.at(text_such_pos) == zkette.at(zkette_such_pos))
  49.     {
  50.         // ...das Ende der zu suchenden Zeichenkette erreicht
  51.         if (zkette_such_pos+1 == zkette.length())
  52.         {
  53.             cout << "Die Zeichenkette \'" << zkette << "\' ist in dem Text \'" << text << "\' enthalten." << endl
  54.                  << "Sie startet ab Zeichen " << text_pos << " (bei Zaehlung ab 0)." << endl;
  55.  
  56.             return 1;
  57.         }
  58.         // ...das Ende der zu suchenden Zeichenkette noch nicht erreicht
  59.         else
  60.             // Diese Funktion noch mal mit neuen Positionen/Werten aufrufen um weiter zu suchen
  61.             return zeichenkette_suchen_rekursiv(text, zkette, text_pos, text_such_pos+1, zkette_such_pos+1);
  62.     }
  63.     else
  64.     {
  65.         // Falls zu suchende Zeichenkette nicht mehr in den uebrigen Text passt
  66.         if (text_pos + zkette.length() - 1 == text.length())
  67.         {
  68.             cout << "Die Zeichenkette \'" << zkette << "\' ist NICHT in dem Text \'" << text << "\' enthalten." << endl;
  69.  
  70.             return 0;
  71.         }
  72.         // Falls das Ende der zu suchenden Zeichenkette noch nicht erreicht wurde
  73.         else if (zkette_such_pos+1 != zkette.length())
  74.             return zeichenkette_suchen_rekursiv(text, zkette, text_pos+1, text_pos+1, 0);
  75.     }
  76.  
  77.     // Damit beim Compilieren keiner meckert noch einen Rueckgabewert mitgeben
  78.     // Grund fuers Meckern: Ein Rueckgabewert wurde zu Anfang definiert: int zeichenkette_suchen_rekursiv (...) {...}
  79.     return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement