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