в результате становится равной длине 8, первые четыре значения правильно находит а дальше случайные на примере "111" "111"
string longArithmeticsAddBinary(const string& a, const string& b) {
const string& max = a.length() > b.length() ? a : b;
const string& min = a.length() < b.length() ? a : b;
char* resultBuffer = new char[max.length() + 2];
int insertIndex = max.length();
bool extra = false;
for (int i = max.length() - 1, j = min.length()-1; i >= 0; --i, --j) {
int currentValue = (max[i] - '0') + (j >= 0 ? min[j] - '0' : 0) + (extra ? 1 : 0);
extra = currentValue >= 2;
currentValue %= 2;
resultBuffer[insertIndex--] = currentValue + '0';
}
char* resultPointer = resultBuffer;
if (extra)
resultPointer[insertIndex] = '1';
else ++resultPointer;
std::string result(resultPointer);
delete [] resultBuffer;
return result;
}
я забыл про нуль терминатор
Обсуждают сегодня