Problemă rezolvată șir de caractere clasa a XI-a mate-info neintensiv #4

Enunț

Se citește de la tastatură un șir alcătuit din cel mult 100 litere mici ale alfabetului englez. Acest șir va fi supus unor procese de eliminare a tuturor secvențelor de caractere identice situate pe poziții alăturate, eliminările reluându-se până când șirul nu mai conține succesiuni de caractere alăturate egale. Realizați un program care afișează șirul rezultat după aplicarea algoritmului de mai sus.

Exemplu: pentru șirul „vacaantaaa” vom obține în ordine: „vacntaaa” și „vacnt”.

Vizual

Exemple de încercat

  • teesst
  • abbc
  • cool
  • rezolvareaa

Rezolvare

#include
#include
using namespace std;


int main()
{
 char s[101];
 cout <> s;


 bool schimbare;
 do
 {
  schimbare = false;
  int inceput = -1;
  int sfarsit = -1;
  bool in = false;


  int l = strlen(s);

  for (int i = 0; i < l – 1; ++i)
  {
   if (s[i] == s[i + 1])
   {
    if (in)
    {
     sfarsit = i + 1;
    }
    else
    {
     in = true;
     inceput = i;
     sfarsit = i + 1;
     schimbare = true;
    }
   }
   else
   {
    if (in)
    {
     in = false;
     break;
    }
   }
  }
  if (schimbare)
  {
   for (int i = sfarsit + 1; i < l; ++i)
   {
    s[i – sfarsit + inceput – 1] = s[i];
   }
   l = l – (sfarsit – inceput + 1);
   s[l] = ‘\0’;


   cout << s << endl;
  }
 } while (schimbare);


 return 0;
}

Lasă un răspuns

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare /  Schimbă )

Fotografie Google

Comentezi folosind contul tău Google. Dezautentificare /  Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare /  Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare /  Schimbă )

Conectare la %s

%d blogeri au apreciat: