我正在大学做我的学校作业 - 程序需要 2 个二进制数并写出它们的总和。我的大学使用一种特殊的软件来测试家庭作业,其中一个测试是“随机数据测试”,我的程序无法通过,有人可以给我一些提示吗?程序:
#include <iostream>
#include <string>
using namespace std;
int B2D(string number)
{
int result = 0, pow = 1;
for ( int i = number.length() - 1; i >= 0; --i, pow <<= 1 )
result += (number[i] - '0') * pow;
return result;
}
string D2B(int number)
{
if ( number == 0 ) return "0";
if ( number == 1 ) return "1";
if ( number % 2 == 0 )
return D2B(number / 2) + "0";
else
return D2B(number / 2) + "1";
}
int main()
{
string input_number;
string input_number2;
cout << "Write 2 binary numbers" << endl;
if(!(cin >> input_number >> input_number2))
{
cout << "Wrong entry." << endl;
return 0;
}
for(unsigned int i=0;i<input_number.size();i++){
if((input_number[i] != '1') && (input_number[i] != '0'))
{
cout << "Wrong entry." << endl;
return 0;
}
}
for(unsigned int i=0;i<input_number2.size();i++){
if((input_number2[i] != '1') && (input_number2[i] != '0'))
{
cout << "Wrong entry."<<endl;
return 0;
}
}
int result = B2D(input_number);
int result2 = B2D(input_number2);
int result3 = result + result2;
string result4 = D2B(result3);
cout << "Result: " << result4 << endl;
return 0;
}