解决二进制数字程序

时间:2018-03-07 07:55:46

标签: c++ binary

我必须制作一个程序来计算两个二进制数之间的差异,但它不能正常工作,我找不到错误;它输出的0和1是不正确的。 我试图修改几乎所有的东西,但在某一点上,它停止跟随“if”的命令。 很抱歉,如果我的代码效率不高,但我用C ++编写的代码只用了一个月。 如果你能找到错误,我将非常感激。

#include <iostream>

using namespace std;

int main(){

char primoN[8];
char secondoN[8];
int tot[16];
int i=0, j=15, rip=0;         //rip is the number that you need if 0-1 happens
int n1[8];
int n2[8];

cout << "First number:\n";

for( i=0 ; i<8 ; i++){

    cin >> primoN[i];
}

cout << "Second number:\n";

for( i=0 ; i<8 ; i++){

    cin >> secondoN[i];
}

for( i=0 ; i<8 ; i++){                              

    n1[i] = (primoN[i] - '0');
    n2[i] = (secondoN[i] - '0');
}

for( i=7 ; i>=0; i--){

    if(n1[i]==0 && n2[i]==1){                               

        rip=1;
    }

这是检查“rip”是0还是1的“开关”,它位于for循环中。我想可能错误就在这里,但我真的没有任何线索。

        switch (rip){
        case 0:

            tot[j] = n1[i] - n2[i];
            break;
        case 1:

            if(n1[i]==0 && n2[i]==0){

                tot[j]=1;
                rip=0;
            }

            if(n1[i]==1 && n2[i]==0){

                tot[j]=1;
                rip=0;
            }
            if(n1[i]==0 && n2[i]==1){

                tot[j]=1;
            }
            if(n1[i]==1 && n2[i]==1){

                tot[j]=1;
                rip=1;
            }
            break;
    }

    j--;
}

while(j>=0){

    tot[j]=0;
    j--;
}

for( i=0 ; i<15 ; i++){

    cout << tot[i];
}

return 0;
}

0 个答案:

没有答案