scrieti un program care citeste de la tastatura un sir de caractere format din cel mult 250 de caractere litere mici ale alfabetului englez si afiseaza pe ecran sirul rezultat si numarul minim de etape de eliminare astfel incat sa nu mai existe in sir doua caractere identice.O etapa de eliminare se aplica unei secvente de caractere identice care incepe de la pozitia i din sir ,sterge secventa de pe pozitia i apoi repeta stergerea secventelor de caractere identice ce includ pozitia i pana cand nu se mai obtin caractere identice alaturate ex.pt mtopppppootatnnnne se afiseaza mate 2
Răspunsuri la întrebare
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;
}