Chào mọi người, hiện em là newbie, là sinh viên năm 1 và là người mới tập học lập trình. Hiện nay em đang vướng vào 1 vấn đề là tính thương của 2 đa thức và phần dư phép chia em chưa thực hiện được. Em cảm phiền anh chị đi trước hãy truyền đạt và code mẫu giúp em để em lấy làm tham khảo học tốt hơn ạ. Em xin cảm ơn.
Link code của em đây ạ: http://codepad.org/vCo4bJI3
Tính thương của hai đa thức và phân dư của phép chia code C++
Bài tập dạng này, chính là đề yêu cầu như nào thì làm y như vậy thôi.
Bạn chưa biết code như nào thì làm thử vài cái ví dụ bằng tay rồi xem quy luật nó ra sao đã.
Bạn thử làm bằng tay các phép chia sau xem kết quả là gì nào?
{5x^3+3x^2-7x+1}\over{4x^2-2x}
{x^4+3x-1}\over{2x^2+x-7}
2 Likes
Theo lý thuyết, muốn chia đa thức cho đa thức ta làm như sau:
- Sắp xếp các đa thức theo lũy thừa giảm dần của lũy thừa biến
- Đặt phép chia như phép chia các số.
- Lấy hạng tử cao nhất của đa thức bị chia chia cho hạng tử cao nhất của đa thức chia.
- Lấy thương nhân với đa thức chia và đặt kết quả dưới dòng đa thức bị chia.
- Lấy hiệu của đa thức bị chia với tích vừa tìm được.
- Tiếp tục làm như vậy đến khi được dư bằng 0 hoặc dư là đa thức có bậc nhỏ hơn đa thức chia.
Như vậy kết quả phép chia:
1 Like
biết cách làm rồi thì chuyển cách làm thành code thôi
Từ lý thuyết này, chuyển qua thuật toán thì nó sẽ như sau:
Hàm chia_da_thuc(DT* a, DT* b):
DT ketqua = 0
B0. Lặp lại cho đến khi DT a==0 hoặc Bac(DT a)<Bac(DT b)
B1. thuong = a->heso[Bac(DT a)]/b->heso[Bac(DT b)]
B2. DT tam = thuong * DT b
B3. DT hieu = DT a - DT tam
B4. DT ketqua = DT ketqua + thuong*x^(Bac(DT a) - Bac(DT b))
B5. Gán DT a = DT hieu rồi lặp lại từ bước B0
Return DT ketqua
2 Likes