Advertisement
Emanuele_Bruno

dire se una stringa t Γ© contenuta in s

Nov 12th, 2015
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.     string s,t;
  9.     int m,n,i,k;
  10.     bool sottoinsieme=false;
  11.     cout << "Inserire una stringa s: ";
  12.     cin >> s;
  13.     cout << "Inserire una stringa t: ";
  14.     cin >> t;
  15.     m=s.length(); //misuro e memorizzo in m la lunghezza di s
  16.     n=t.length(); //misuro e memorizzo in n la lunchezza di t
  17.     if (n>m) {
  18.         cout << "Errore: la stringa S deve essere piu grande di T";
  19.         return 1;
  20.     }
  21.     i=0; k=0; //i contatori i e k sono usati rispettivamente per s e t
  22.     while (i<m)
  23.         {
  24.             if (s.substr(i,1)==t.substr(k,1)) //se il confronto va a buon fine...
  25.             {
  26.                 k++; //...si passa al successivo
  27.                 if (k==n) //se k misura esattamente quanto la lunghezza della stringa t allora t Γ¨ sottoinsimene di s
  28.                 {
  29.                     sottoinsieme=true;
  30.                     i=m; //imposto i=m per uscire subito dal ciclo while
  31.                 }
  32.             } else k=0; //invece se il confronto non va a buon fine, si ricomincia da capo...
  33.             i++;
  34.         }
  35.     if (sottoinsieme) cout << "La stringa t e' sottoinsieme di s";
  36.     else cout << "La stringa t *NON* e' sottoinsieme di s";
  37.     return 0;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement