带有嵌套if的for循环已损坏,并将全1而不是数据传输到数组

时间:2019-03-22 20:57:34

标签: c++ hamming-code

经过几个小时的测试,如果将数据从converMain []传输到converMain1 [],则我将问题缩小为单个for循环,而不是嵌套的for循环(第64行) 1,Ive经过检查,其他一切正常,只是这个for循环。

int converMain[14];
converMain1[0] = 1;
int g = 1;
for (int i = 1; i < 19; i++) {
if (i == 1 || 2 || 4 || 8) { //tests if we are on a parody bit
converMain1[i] = p[i]; //puts parody bit in Main1 array
        g++; //this variable helps sync the bits in the               
                         //right spot in the Main1 array 
    }
    else {
    converMain1[i] = converMain[i - g];         
//puts binary stored in Main array into Main1 array with correct sync
    }
}

输出:

0001011 h 1010011 e 1001111101111111101 0010 392953 104 101 00010111010011
parody bits          ^^ ^   ^
0011011 l 0011011 l 1001111101111111101 0010 392953 108 108 00110110011011
parody bits          ^^ ^   ^
1111011 o 1110111 w 1101011101111111101 1000 392939 111 119 11110111110111
parody bits          ^^ ^   ^
1111011 o 0100111 r 1111011101111111101 1100 392943 111 114 11110110100111
parody bits          ^^ ^   ^
0011011 l 0010011 d 1111111111111111101 1111 393215 108 100 00110110010011
parody bits          ^^ ^   ^
1000010 ! 1000010 ! 1011011101111111101 0100 392941 33 33 10000101000010
parody bits          ^^ ^   ^ 

我们应该期望最右边的数字被串入    此处的数字位于中间,并且箭头忽略了箭头的位置,因为这些是模仿位,  只是将它们移过来,然后放下其余的数组。

1 个答案:

答案 0 :(得分:0)

if (i == 1 || 2 || 4 || 8)总是 正确。

if ((i == 1) || (2) || (4) || (8))是编译器读取它的方式,因此它是对的,至少在2处停止。

自然的解决方案是if (i == 1 || i == 2 || i == 4 || i == 8) ...