这是我的第一个问题,所以我希望我不会在论坛上违反任何给定的规则。我想请你帮忙。我真的在编程菜鸟,但是对于家庭作业,我必须用 C++ 编写一个程序,它将添加 2 个二进制数。我能够通过转换为小数并添加它们来实现。我做到了,因为我的电脑里已经有了一些零件。我的问题是,除非我输入非常大的二进制数,否则一切正常。当我们的学校程序检查代码时,更改数据类型会产生不同的结果。我不确定到底要改变什么。先感谢您。当必须转换带有“e”的十进制数时,似乎出现了问题-
#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;
}