01/10/2018, 10:23 
               
            Không tìm được lỗi trong code bignum
#include<iostream>
#include<string>
using namespace std;
//Lấy chuỗi ngược, vd: qwerty -> ytrewq
string sLat(const string sSo) {
	string sResult = "";
	for (int i = sSo.length() - 1; i > -1; i--)
		sResult += sSo[i];
	return sResult;
}
struct So{
	string sSo;
};
So operator+(So oSo1,So oSo2){
	string sResult = "",
		sSo1 = sLat(oSo1.sSo),
		sSo2 = sLat(oSo2.sSo);
	int nLength;
	//Cân bằng độ dài 2 chuỗi, vd: 1234, 56 -> 1234, 5600
	if (sSo1.length() > sSo2.length()) {
		nLength = sSo1.length();
		sSo2.insert(sSo2.end(), nLength - sSo2.length(), '0');
	}
	else {
		nLength = sSo2.length();
		sSo1.insert(sSo1.end(), nLength - sSo1.length(), '0');
	}
	//Xử lý 
	for (int i = 0; i < nLength; i++) {
		if (i == 0)
			sResult += sSo1[i] + sSo2[i] - 48;
		else if (sResult[i - 1] > '9') {
			sResult[i - 1] -= 10;
			sResult[i] += sSo1[i] + sSo2[i] - 47;
		}
		else
			sResult[i] += sSo1[i] + sSo2[i] - 48;
	}
	if (sResult.back() > '9') {
		sResult.back() -= 10;
		sResult += '1';
	}
	//Kết quả
	So oResult;
	oResult.sSo = sLat(sResult);
	return oResult;
}
int main() {
	cout << "Nhap so thu 1: " << '	';
	So oSo1;
	cin >> oSo1.sSo;
	cout << "Nhap so thu 2: " << '	';
	So oSo2;
	cin >> oSo2.sSo;
	cout << "Ket qua: " << '	';
	So oResult;
	oResult = oSo1 + oSo2;
	cout << oResult.sSo << endl;
	system("pause");
	return 0;
}
Đây là INPUT(chưa vào số thứ 2 - chưa nhấn Enter)

Đây là OUTPUT(vào số thứ 2 - đã nhấn Enter)

            Bài liên quan
         
                
            




Bạn đã thử test chưa mà biết là code lỗi? Nếu như có test nào sai thì bạn up cả input + output lên.
Hi Nguyên Trọng.
Chỗ này sai sai thì phải.
Ban đầu đã có đảo ngược rồi
Code này không hay ở chỗ biểu diễn nội và biểu diễn để hiển thị là một. (ý mình ko phải number format đâu)
Bạn nói rõ được không? Bạn cho mình ý tưởng code của bạn nhé!
cảm ơn mọi người, mình tìm được lỗi ngu rồi, mọi người làm ơn cho mình ý tưởng để cải thiện thuật toán với!