【发布时间】:2022-01-04 15:41:39
【问题描述】:
位编码有五种:11、10、01、001、000。每种位编码对应的信息是
11 -> 一个
10 -> B
01 -> C
001 -> D
000 -> E
编译结果如下:
Enter a sequence of bits: 01100001100110
CBEADB
我已经写了这个,但它不能工作。
#include<iostream>
#include<string>
using namespace std;
int main()
{
int A, B, C, D, E ;
string code;
cout << "Enter a sequence of bits: ";
cin >> code;
int i = 0;
while (i < code.length())
{
if( code[i]== 1 && code[i + 1]== 1 )
{
cout << 'A';
i += 2;
}
else if ( code[i]== 1 && code[i + 1]== 0)
{
cout << 'B';
i += 2;
}
else if ( code[i]== 0 && code[i + 1]== 1)
{
cout << 'C';
i += 2;
}
else if ( code[i]== 0 && code[i + 1]== 0 && code[ i + 2]== 1)
{
cout << 'D';
i += 3;
}
else if ( code[i]== 0 && code[i + 1]== 0 && code[ i + 2]== 0)
{
cout << 'E';
i += 3;
}
}
cout << endl;
return 0;
}
【问题讨论】:
-
向我们详细解释为什么这不起作用,你得到了什么,等等
-
code[i]始终是一个字符,您正在将它与一个整数进行比较。 -
code[i]将是'0'(0x30) 或'1'(0x31),而不是 0 和 1。
标签: c++ string if-statement decoder