Pisze sobie taki mały programik kompresujący ciąg znaków metodą LZ78. Niestety kolejnych prównaniach w petli for licznik o nazwie index przy pozytywnym wyniku ifa wypluwa 0 a w ostatnim przypadku 0, zupełnie nie wiem dlaczego. Co robię nie tak?
#include <iostream>
using namespace std;
int main()
{
int wy1, n, i=0, index;
string slowo[8]={"d","d","d","d","d","d","d","d"};
string S, x1, x2, we, wy2;
S = "abbbcaabbcbbcaaac"; //lancuch do wczytania
n = S.length();
while (i < n)
{
for( index = 0; index<=7; index++)
{
x1 = S[i];
x2 = slowo[index];
cout << "Taki jest index bez porownan: " << index << endl;
if( x1 == x2 )
{
cout << "Taki jest index w pozytywnym porownaniu: " << index << endl;
wy1 = index;
wy2 = S[i++];
we = S[i]+wy2;
i++;
}
else
{
//cout << "Taki jest index w negatywnym porownaniu: " << index << endl;
we = S[i];
wy1 = 0;
wy2 = S[i];
};
slowo[index] = we;
}
cout << "Wejscie: " << we << " Wyjscie: " << wy1 << wy2 << " Indeks: " << i << " Slowo: " << we << endl;
i++;
}
return 0;