Zrobiłam zadanie z serwisu spoj, pt. "Flamaster". Jednak chciałabym zmienić w nim jedną rzecz. Teraz program skraca wyraz jeśli obok siebie występują min. 3 takie same litery. Natomiast ja chcę zrobić coś takiego, aby podawac do programu ilość znaków, tzn od kiedy ma zacząć skracać. Próbuję coś napisać, ale kompilator cały czas wyrzuca mi błąd.
Oto kod:
#include <iostream>
#include <sstream>
using namespace std;
int obliczIloscWystapienWybranegoZnaku(string wyrazDoSkrocenia, int iloscZnakow)
{
int iloscWystapien = 1;
while (wyrazDoSkrocenia[iloscZnakow] == wyrazDoSkrocenia[iloscZnakow + 1])
{
iloscZnakow++;
iloscWystapien++;
}
return iloscWystapien;
}
string konwersjaIntNaString (int liczba)
{
ostringstream ss;
ss << liczba;
string str = ss.str();
return str;
}
string skracanieWyrazow(string wyrazDoSkrocenia, int iloscZnakow)
{
int dlugosc = wyrazDoSkrocenia.size();
int iloscWystapien;
char powtarzajacySieZnak;
for(int i = 0; i < dlugosc; i++)
{
if(dlugosc > iloscZnakow)
{
iloscWystapien = obliczIloscWystapienWybranegoZnaku(wyrazDoSkrocenia, iloscZnakow);
powtarzajacySieZnak = wyrazDoSkrocenia[iloscZnakow];
wyrazDoSkrocenia.replace(powtarzajacySieZnak, iloscWystapien, wyrazDoSkrocenia[iloscZnakow] + konwersjaIntNaString(iloscWystapien));
dlugosc = wyrazDoSkrocenia.size();
}
}
return wyrazDoSkrocenia;
}
int main()
{
string wyraz = "AAAAAAAAAA";
int iloscZnakow = 0;
int dlugosc;
cin >> iloscZnakow;
skracanieWyrazow(wyraz, iloscZnakow);
return 0;
}