Witam.
jestem totalnym laikiem w C++, zacząłem rozwiązywać zadania znalezione w internecie aby trochę nawyknąć do CPP. Znalazlem zadanie którego wymaganiem jest napisanie programu mającego zastępować powtarzające się znaki tekstu cyframi (np AAAAABBBCC -> A5B3CC). Wykonałem to jednym sposobem, i teraz chciałem to ugryźć troche inaczej, i natrafiłem naproblem. Z tego co widzę w linijce 36 przy pętli do/while występuje wykroczenie poza zakres. Jednak nie wiem dlaczego tak się dzieje. Zauważyłem że zawsze przy ostatnim znaku stringa jest wykraczanie poza zakres(np przy aaaaa lub nawet aa nie zlicza ostatniego znaku). Proszę o pomoc.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int ileStringow;
cin >> ileStringow;
string* stringi = new string[ileStringow];
for (int i = 0; i<ileStringow; i++)
{
string temp;
cin >> temp;
int iterat = 0;
for (unsigned int j = 0; j<temp.length(); j++)
{
int k = j;
if (iterat == 0)
{
stringi[i] += temp.at(iterat);
iterat++;
}
else if (temp.at(j) == stringi[i].at(iterat - 1))
{
int tryCount = 1;
do
{
tryCount++;
j++;
} while (temp.at(j) == stringi[i].at(iterat - 1)&&j<temp.length());
if (tryCount == 2)
{
stringi[i] += temp.at(k);
iterat++;
}
else
{
string tempo = to_string(tryCount);
stringi[i] += tempo;
iterat += tempo.length();
}
}
else
{
stringi[i] += temp.at(j);
}
}
}
for (int i = 0; i<ileStringow; i++)
{
cout << stringi[i] << endl;
}
}