это мой первый вопрос, поэтому я надеюсь, что не нарушу ни одно из заданных правил здесь, на форуме. Я хотел бы попросить вас о помощи. Я действительно программирую noob, но для домашней работы мне нужно сделать программу на C++, которая добавит 2 двоичных числа. Я смог сделать это через преобразование в десятичную и добавив их. Я сделал это bcs. У меня уже были части для этого на моем ПК. Мой вопрос в том, что все работает нормально, если я не вхожу в действительно большие двоичные числа. Изменение типов данных влияет на результаты, когда наша школьная программа проверяет код. Я не уверен, что это точно изменится. Заранее спасибо. Похоже, proble когда больше появляться десятичное число с «е» должен быть 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. Моя цель - получить эти очки за любую стоимость: D ty для ответа – user2971793
Я предлагаю вам определить функцию 'string bin_sum (const string & a, const string & b)'. Когда вы это сделаете, вы можете * проверить * эту функцию, передав ей известные строки и проверив результат. –