01/10/2018, 09:19
Phép chia trong bigInt
em muốn làm một toán tử /= cho bigint
const BigInt & BigInt::operator/=(const BigInt & num2) {
return *this;
}
thuật toán chia nó khó quá không giống như toán nhân chỉ cần tạo vòng lặp cộng
thuật toán chia thì cần vòng lặp trừ nhưng lại vướng vào số dư, ví du như với 9 / 3 thì = 3 nhưng nếu là 9 / 4 = 2 dư 1
ai rành thì giúp em với
Bài liên quan
Hi Nguyễn Văn Khoa.
Xong phép nhân rồi a ?
Phép chia thì cứ áp dụng quy tắc chia số nhiều chữ số bình thường thôi. Hoặc thô thiển nhất là trừ liên tục.
Nếu là mình thì mình dùng phương pháp trừ liên tục rồi đếm số lần trừ, đến khi nào ra kết quả nhỏ hơn số chia thì đó là số dư.
mấy cái mà các anh nói em đều thử hết rồi nhưng bị vướng số dư nên không được, ví dụ như 10 / 2 thì sẽ là 5 nhưng nếu áp dụng loop trừ thì sẽ nhận được là 2
Đây là phép chia, còn phép dư thì đơn giản hơn nữa nhé :))
thế cho em xin luôn cái phép dư nhé
cái này nếu dùng thì cho ra kết quả là 10 / 2 = 0; 9 / 2 = 1
trong C++ có khai báo operator
/=
à O_oMình tưởng khai báo
/
và==
là có/=
chứ?mà cái cú pháp lạ vậy?
phải liệt kê hết đó, nếu ko thì phải viết 1 cái struct rồi kế thừa từ struct đó để nó tự động đẻ ra mấy op còn lại
lạ ở chỗ nào vậy bạn
À, không có gì, tại mình chưa biết XD
cái của mình cũng dùng phương pháp của bạn sao nó lại ra số đầu tiên
cho mình hỏi cái này có vấn đề không ạ mình nhập 10000000000 / 50000000 = 28 nhưng tính đùng thì phải = 200
nhưng nếu nhập 987654321 / 123456789 = 8 thì lại tính đúng
Mình đọc code của bạn không hiểu gì sất mình làm bên C# nó đơn giản thế kia thôi :))
Nếu mà C# có thể overload
/=
thì sẽ thế này:(Với điều kiện là đã định nghĩa các toán tử
=
,>=
,+=
,-=
trước đó)nó y chang à, sobichia là mình dùng pointer *this để xác định
nhưng cách này vẫn có lỗi mình cũng đã thử y chang cái của bạn là nhập:
10000000000 / 50000000 = 28 nhưng tính đùng thì phải = 200
nhưng nếu nhập 987654321 / 123456789 = 8 thì lại tính đúng
cho em hỏi cái này có vấn đề không ạ,
em nhập 10000000000 / 50000000 = 28 nhưng tính đùng thì phải = 200 nhưng nếu nhập 987654321 / 123456789 = 8 thì lại tính đúng
ai giup em doan nay voi
BigInt sao không chuyển về số hệ 2 để thao tác, thuật toán có sẵn hết rồi mà?
minh mo ra tu hom qua roi ban