Răspuns :
Nu inteleg exact ce reprezinta o etapa de eliminare. Eu contorizez 3, nu 2. Un exemplu mai clar ar fi fost apreciat. In orice caz, programul elimina caracterele asa cum trebuie.
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char txt[250];
int i,nr_iteratii=0;
//Citire date
cin.get(txt, 250);
//Stergere dubluri
bool perfect=0;
while(!perfect){
//Mareste numarul de etape
nr_iteratii++;
//Presupune ca sirul e complet procesat
perfect = 1;
//Compara fiecare litera cu cea urmatoare
for(int i=0;i<strlen(txt)-1;i++){
if(txt[i] == txt[i+1]){
//Daca literele coincid atunci sirul nu e complet procesat.
perfect=0;
//Gaseste locul unde se termina secventa
int j=i+1;
while(txt[j]==txt[i])j++;
//Sterge secventa respectiva
strcpy(txt+i,txt+j);
}
}
}
//Afiseaza rezultat
cout << txt << " " << nr_iteratii-1;
}