Advertisement
Guest User

Q_Rekursion_A_9.2

a guest
Dec 6th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. int zeichenkette_suchen_rekursiv(
  6.     string textE,
  7.     string zketteE,
  8.     unsigned int text_pos,
  9.     unsigned int text_such_pos,
  10.     unsigned int zkette_such_pos)
  11. {
  12.     string text = textE;
  13.     string zkette = zketteE;
  14.  
  15.     int position = text_pos;
  16.     int textStelle = text_such_pos;
  17.     int zeichenKettePos = zkette_such_pos;
  18.  
  19.     int zLaenge = zkette.size();
  20.     int tLaenge = text.size();
  21.  
  22.     int zaehler=0;
  23.     int abstand=0;
  24.  
  25.     bool zeichenKetteGefunden = false;
  26.  
  27.     if (zLaenge > zeichenKettePos)
  28.     {
  29.         if (tLaenge > textStelle)
  30.         {
  31.  
  32.             char b1 = text.at(textStelle);
  33.             char b2 = zkette.at(zeichenKettePos);
  34.  
  35.             if (b1 == b2)
  36.             {
  37.                 textStelle++;
  38.                 zeichenKettePos++;
  39.                 if (zeichenKettePos == zLaenge)
  40.                 {
  41.                     zeichenKetteGefunden = true;
  42.                 }
  43.  
  44.                 if (zeichenKetteGefunden)
  45.                 {
  46.                     cout << "Die Zeichenkette '"<<zkette<<"' ist in dem Text '"<<text<<"' enthalten." << endl;
  47.                     cout << "Sie startet ab Zeichen " << position << " (bei Zaehlung ab 0). "<<endl;
  48.                 }
  49.                 zeichenkette_suchen_rekursiv(text, zkette, position, textStelle, zeichenKettePos);
  50.             }
  51.             else
  52.             {
  53.                 textStelle++;
  54.                 zeichenKettePos = 0;
  55.                 if (zeichenKettePos == 0)
  56.                 {
  57.                     zeichenKetteGefunden = false;
  58.                 }
  59.                 if (position == tLaenge-1)
  60.                 {
  61.                     cout << "Die Zeichenkette '"<< zkette<<"' ist NICHT in dem Text '" <<text<<"' enthalten" << endl;
  62.                 }
  63.  
  64.                
  65.                 position = textStelle;
  66.                 zeichenkette_suchen_rekursiv(text, zkette, position, textStelle, zeichenKettePos);
  67.             }
  68.  
  69.         }
  70.     }
  71.  
  72.     return 0;
  73. }
  74.  
  75. int main()
  76. {
  77.  
  78.     string eingabeText = "";
  79.     string suchenderText = "";
  80.  
  81.     cout << "Bitte geben Sie den Text ein: ";
  82.     getline(cin, eingabeText);
  83.     cout << "Bitte geben Sie die zu suchende Zeichenkette ein: ";
  84.     getline(cin, suchenderText);
  85.  
  86.     zeichenkette_suchen_rekursiv(eingabeText, suchenderText,0,0,0);
  87.  
  88.     system("pause");
  89.     return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement