Как Понять именно, на чём у тебя ошибка в кодировании символов или бинарного кода?

я начинающий кодер, но у меня, решая задачи, появилась проблема - мой код отказывался декодить длинные сообщения - толи ему не нравится в нём 0, толи просто в ASCII нету цифр, толи взорвалась из за не правильно поставлены радиус циклов. вот правила кодировки -

Входное сообщение, состоящее из символов ASCII (7 бит), кодируется в блоки по 0, где каждый блок отделяется от другого блока пробелом. Два последовательных блока используются для получения серии битов с одинаковыми значениями (только значения 1 или 0). Первый блок всегда содержит 0 или 00, где если это 0, то серия содержит 1, иначе она содержит 0. Второй блок содержит число 0, которое представляет количество битов в серии.

вот сообщение -

keyboard has 2 keys: 0 and white space.

а вот и мой код -

#include <iostream>
#include <string>

using namespace std;

int main() {
    string message;
    cin >> message;
    string summ = "";
    int pre = -1;

    for (int i = 0; i < message.length(); i++) 
    {
        for (int j = 6; j >= 0; j--)
        {
            int bit = (int)message[i] >> j & 1;
            if (bit != pre)
            {
                if (pre != -1)
                {
                    summ += " ";
                }
                summ += (1 == bit) ? "0 " : "00 ";
                pre = bit;
            }
            summ += "0";
        }
    }

    cout << summ << endl;
}

И можете, также сказать, на каких основаниях вы находите незаметные ошибки, или просто ходите по каждой строке?


Ответы (0 шт):