Witam,
Proszę o pomoc w rozwiązaniu następującego wyzwania związanego z tym zadaniem.
Obecnie program skraca wyraz wtedy, kiedy występują min. 3 takie same znaki obok siebie. Natomiast chciałbym stworzyć taką funkcję, do której będziemy podawać wyrazDoSkrocenia oraz to od jakiej ilości znaków ma nastąpić skrócenie. Chodzi o to aby oprócz wyrazDoSkrocenia program przyjmował drugą zmienną całkowitą o nazwie iloscZnakow określającą to, od jakiej minimalnej ilości znaków ma zacząć skracać wyraz.
Takie uniwersalne usprawnienie tego zadania.
Z góry dziękuję za pomoc.
Poniżej kod źródłowy:
[cpp]
include
include
include
include
using namespace std;
string konwersjaIntNaString(int liczba)
{
ostringstream ss;
ss << liczba;
string str = ss.str();
return str;
}
int obliczWystapieniaWybranegoZnaku(string wyraz, int pozycjaZnaku)
{
int iloscWystapien = 1;
if(wyraz.length()>pozycjaZnaku)
{
while(wyraz[pozycjaZnaku] == wyraz[pozycjaZnaku+1])
{
iloscWystapien++;
pozycjaZnaku++;
}
}
else
iloscWystapien = 0;
return iloscWystapien;
}
string skracanieWyrazow(string wyrazDoSkrocenia)
{
int dlugosc = wyrazDoSkrocenia.length();
int iloscWystapien;
char powtarzajacySieZnak;
for(int i = 0; i < dlugosc - 2; i++)
{
if((wyrazDoSkrocenia[i] == wyrazDoSkrocenia[i+1])&&(wyrazDoSkrocenia[i+1] == wyrazDoSkrocenia[i+2]))
{
iloscWystapien = obliczWystapieniaWybranegoZnaku(wyrazDoSkrocenia,i);
powtarzajacySieZnak = wyrazDoSkrocenia[i];
wyrazDoSkrocenia.replace(i,iloscWystapien,powtarzajacySieZnak+konwersjaIntNaString(iloscWystapien));
dlugosc = wyrazDoSkrocenia.length();
}
}
return wyrazDoSkrocenia;
}
int main()
{
string wyraz;
cin>>wyraz;
cout<<skracanieWyrazow(wyraz)<<endl;
return 0;
}
[/cpp]
created
last reply
- 6
replies
- 916
views
- 4
users
- 6
links