これは私の最初の質問なので、フォーラムで与えられたルールに違反しないことを願っています。私はあなたに助けを求めたいです。私は本当にプログラミング初心者ですが、宿題のために、2つの2進数を追加するC ++でプログラムを作成する必要があります。10進数に変換して足すことでできました。私はそれをやったのですが、PCにはすでにいくつかの部品がありました。私の質問は、本当に大きな 2 進数を入力しない限り、すべてが正常に機能していることです。データ型を変更すると、学校のプログラムがコードをチェックするときの結果が異なります。正確に変更する方法がわかりません。前もって感謝します。「e」を含む10進数を変換する必要がある場合に問題が発生するようです-
#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;
}