1
這是我的第一個問題,所以我希望我不會破壞論壇上的任何規則。我想請你幫忙。我真的編程noob,但爲了做作業,我必須在C++中編寫一個程序,它將添加2個二進制數。我能夠通過轉換爲小數點並添加它們。我做了它bcs我已經在我的電腦中有一些零件。我的問題是,除非輸入非常大的二進制數,否則一切正常。當我們的學校程序檢查代碼時,更改數據類型會在結果上產生差異。林不知道要改變確切。先謝謝你。它看起來像proble occure當「E」十進制數必須是converted-大型二進制文件添加
#include <iostream>
#include <cmath>
#include <string>
#include <vector>
using namespace std;
int main()
{
int k = 0;
int l = 0;
int i = 0;
int j = 0;
double number = 0;
double numberb = 0;
long dec;
string input;
string inputb;
cout << "Enter two binary numbers:" << endl;
cin >> input >> inputb;
if(cin.fail())
{cout << "Wrong input." << endl;
return 0;
}
for (i = input.length() - 1; i>=0; i--)
{
if (input[i] != '1' && input[i] != '0')
{
cout << "Wrong input." << endl;
return 0;
}
if (input[i] == '1')
{
number += pow((double)2,(int)j);
}
j++;
}
for (k = inputb.length() - 1; k>=0; k--)
{
if (inputb[k] != '1' && inputb[k] != '0')
{
cout << "Wrong input." << endl;
return 0;
}
if (inputb[k] == '1')
{
numberb += pow((double)2,(int)l);
}
l++;
}
dec = number+numberb;
vector <double> bin_vector;
long bin_num;
while (dec >= 1)
{
bin_num = dec % 2;
dec /= 2;
bin_vector.push_back(bin_num);
}
cout << "Soucet: ";
for (int i = (double) bin_vector.size() - 1; i >= 0; i--)
cout << bin_vector[i] << "";
cout << endl;
return 0;
}
考慮到你正在爲此付出的努力,我幾乎要告訴你,你不必爲了完成這件事而轉換成小數。這樣做,即解決問題而不必轉換爲機器十進制,將自動解決您的大數問題。其次,如果沿着我所建議的道路前進,你需要考慮兩個位串的長度*不相等*的可能性。 – WhozCraig
是的,我明白,它可能會更容易使其另一種方式,現在我考慮這個選項。但我仍然需要添加0 + 0選項。我的目標是在任何成本中獲得這些點:答案 – user2971793
我建議你定義一個函數'string bin_sum(const string&a,const string&b)'。當你這樣做的時候,你可以通過傳遞已知的字符串並檢查結果來*測試*該函數。 –