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 <iostream>#include <cstring>
using namespace std;
int main()
{
char s[101];
cout << "Sir: "; cin >> 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;
}
Niciun comentariu:
Trimiteți un comentariu