1
我正在大学做我的学校作业 - 程序需要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;
}
您能详细说明“无法通过”是什么意思吗?什么是“随机数据”?预期的行为是什么? – Angew
你是否尝试过自己做这个测试,并逐步调试? – PlasmaHH
嗯,我实际上不知道它是什么,这就是问题,只有我知道的是它用“随机数据”测试程序。预期的行为是,如果您编写两个二进制数字,则会打印它们的总和,如果您写入其他任何值,然后输入1或0,则会打印“错误条目”。程序运行良好,当我测试它与正常的二进制数字,当我做了像“10020 ea56f”又名错误的字符(0和1除外)的输入,它打印“错误条目”,我不知道问题在哪里是。 – user1751550