Mam takie zadanie:
a) każde wystąpienie sekwencji w danych źródłowych zastępujemy tokenem:
przykład:
3 z 3
załóżmy, że n=124, a m=457,
wtedy sekwencję znaków „A” zakodujemy za pomocą 3 bajtowego tokenu:
A A 122, gdzie 122 oznacza kod ASCII znaku w trzecim bajcie
a sekwencję znaków „B” zakodujemy za pomocą dwóch 3 bajtowych tokenów:
B B 255 B B 198, gdzie255 oraz 198 oznaczają kody ASCII znaków na trzecich bajtach
jak widać za pomocą 3 bajtowego tokenu można zakodować sekwencję maksymalnie 257
znaków: znak znak n-2, gdzie n oznacza długość sekwencji
b) każdy pojedynczy znak jest przepisywany
przykład:
…AA…ACBB…BB…
w tym przypadku znak „C” zostanie przepisany:
… A A n-2 C B B k-2 …, gdzie n,k oznaczają długości sekwencji znaków „A” i „B” (przyjmijmy,
że są nie większe niż 257.
Zadanie niby łatwe, ale gdy testuję swój algorytm na prostych danych wszystko jest ok, lecz gdy "wyślę" do szyfrowania *.exe to coś już jest nie tak :/
Oto mój algorytm szyfrowania:
void szyfruj()
{
char zn1, zn2;
int n = 1;
input.get(zn1);
while(!input.eof())
{
input.get(zn2);
if(n == 257 || zn1 != zn2 || input.eof())
{
if(n == 1)
output << zn1;
else
output << zn1 << zn1 << char(n-2);
zn1 = zn2;
n = 1;
}
else
n++;
}
}
Proszę o pomoc, bo nie wiem co jest źle :/ Z góry dziękuję.