Программа кодирования C ++, неправильно кодирующая повторяющиеся символы

Для класса я работаю над программой-кодировщиком. Все, что он делает, — это сравнивает символьный файл сообщения с книжным файлом, сначала находит соответствующий соответствующий символ и отправляет позицию этого символа в книжном файле в кодированный файл. Однако, если он должен искать этот символ снова, он должен найти следующее вхождение этого символа.
Например, скажем, я хотел закодировать «Hello world», используя книжный файл, который также сказал «Hello world». То, что я должен получить, является закодированным файлом, который говорит «0 1 2 3 4 5 6 7 8 9 10 11», вместо этого я получаю «0 1 2 2 4 5 6 4 8 9 10 11»

    for (unsigned int i = 0; i < messageFileVector.size(); i++)
{
asciiValue = messageFileVector[i];

if (asciiValue < 128 || asciiValue >= 0)
{
count = startingPosition[(int)asciiValue];
for (unsigned int j = (unsigned int)startingPosition[(int)asciiValue]; j < (int)bookFileVector.size(); j++)
{
if (count == bookFileVector.size() - 1)
{
count = 0;
j = 0;
}
if (messageFileVector[i] == bookFileVector[j])
{
startingPosition[(int)asciiValue] = count + 1;
codedFile << j << " ";
break;
}
}
count++;
continue;
}
else
{
cout << "Error: message has non-ascii characters" << endl;
codedFile.clear();
return EXIT_FAILURE;
}

Мое лучшее предположение, что я сделал что-то не так с итератором, но для жизни я не могу понять, что.

-1

Решение

startingPosition[(int)asciiValue] должен быть установлен в j+1не count+1,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]