01/10/2018, 09:17
Lỗi opeerator*= trong bigint c++
mọi người giúp me cái này với
em làm một cái bigint co đầy dủ + - * / ở phần * và chia thì em gặp vấn đề
là nếu em chi nhập 5 * 2 hay 6 * 9 thi vẫn bình thường nhưng nếu 20 * 2 hay 2 * 20 thi kết quả là 0. đây là code của em.
const Bigint & Bigint::operator*=(const Bigint & b)
{
int num = 0;
int carry = 0;
for (int i = 0; i < DIGITS; i++)
{
num = (*this).digits[i] * b.digits[i] + carry;
carry = num > 9;
(*this).digits[i] = num - (carry ? 10 : 0);
}
return *this;
}
Bigint operator* (const Bigint& a, const Bigint& b) {
Bigint re(a);
re*= b;
return re;
}
em cảm ơn nhiều lắm
Bài liên quan
Hi Nguyễn Văn Khoa.
Phep nhan sai.
Em biết là sai nhưng vấn đề là em không biết nên sửa như thế nào, anh xem giúp em được không
Hi Nguyễn Văn Khoa.
Bạn code phép nhân sai. Cần 2 vòng for. Thường thì người ta định nghĩa phép nhân gán dựa trên phép nhân.
vậy là em cần 1 loop for cho *this.digit[i] và 1 loop for cho b.digit[i[ phải không ạ ví dụ như
giống như vậy phải không anh
Hi Nguyễn Văn Khoa.
Cái đó nó là cách thực hiện phép nhân bạn xem lại cách thực hiện phép nhân số có nhiều chữ số.
anh cho em 1 ví dụ cụ thể được không ạ
Hi Nguyễn Văn Khoa.
http://360do.vn/index.php/Nuoi-day-con/Toan-lop-4-5-Phep-nhan-voi-so-co-2-chu-so-4-buoc-chuan-de-thuc-hien-221.html
em hỏi về c++ mà
Hi Nguyễn Văn Khoa.
Có thuật toán rồi thì code theo thôi.
em viết như vậy đúng chưa anh mà nó không ra kết quả