Cộng Trừ Nhân Chia đa Thức Bậc N Bất Kỳ - Lập Trình 321
Có thể bạn quan tâm
Lập Trình 321
trên đây là toàn bộ code của chương trình c/c++ cộng trù nhân chia đa thức bậc n bất kỳ bằng phương pháp sử dụng danh sách liên kết đôi. ← Newer Post Older Post → Home
Tổng Hợp Kiến Thức Lập Trình
SLIDE1
Thursday, May 14, 2015
Home » danh sach lien ket , giai thuat » cộng trừ nhân chia đa thức bậc n bất kỳcộng trừ nhân chia đa thức bậc n bất kỳ
viết chương trình c/c++ thực hiện định nghĩa đa thức bậ n bất kỳ và cộng trừ nhân chia trên đa thức. cách làm của Toàn dưới đây là dùng danh sách liên kết đôi để làm. mỗi node sẽ lưu 1 số hạng gồm 2 thông tin là hệ số và số mũ, ngoài thông tin còn có 2 con trỏ của danh sách liên kết. cộng trừ nhân chia đa thức theo kiểu này gây khó khăn cho lập trình nhưng chương trình được tối ưu và chạy nhanh. #include<iostream> using namespace std; typedef struct tagnode { float heso,somu; struct tagnode *next,*pre; }node; node *taonode(float heso,float somu) { node *p=new node; if(p==NULL) exit(1); p->heso=heso; p->somu=somu; p->next=p->pre=NULL; return p; } typedef struct tagdathuc { node*dau,*cuoi; }dathuc; void taodathuc(dathuc &l) { l.dau=l.cuoi=NULL; } void themcuoi(dathuc &l,node *p) { if(l.dau==NULL) l.dau=l.cuoi=p; else { l.cuoi->next=p; p->pre=l.cuoi; l.cuoi=p; } } void nhap(dathuc &l) { node *p; float heso,somu; cout<<"nhap so da thuc, ket thuc khi nhap he so = 0\n"; do{ cout<<"he so = ";cin>>heso; if(heso!=0) { cout<<"so mu = ";cin>>somu; p=taonode(heso,somu); themcuoi(l,p); } cout<<endl; }while(heso!=0); } void xuat(dathuc l) { node *p=l.dau; if(p==NULL) { cout<<0; return; } while(p!=NULL) { if(p==l.dau) { if(p->somu==0) cout<<p->heso; else if(fabs(p->heso)!=1 && p->somu!=1) cout<<p->heso<<"X^"<<p->somu; else if(fabs(p->heso)!=1 && p->somu==1) cout<<p->heso<<"X"; else if(fabs(p->heso)==1 && p->somu!=1) cout<<(p->heso==1?"X^":"-X^")<<p->somu; else cout<<(p->heso==1?"X":"-X"); } else { if(p->somu==0) cout<<(p->heso<0?" - ":" + ")<<fabs(p->heso); else if(fabs(p->heso)!=1 && p->somu!=1) cout<<(p->heso<0?" - ":" + ")<<fabs(p->heso)<<"X^"<<p->somu; else if(fabs(p->heso)!=1 && p->somu==1) cout<<(p->heso<0?" - ":" + ")<<fabs(p->heso)<<"X"; else if(fabs(p->heso)==1 && p->somu!=1) cout<<(p->heso==1?" + X^":" - X^")<<p->somu; else cout<<(p->heso==1?" + X":" - X"); } p=p->next; } } void sapxep(dathuc &l) { node *p1=l.dau,*p2; while(p1!=NULL) { p2=p1->next; while(p2!=NULL) { if(p2->somu>p1->somu) { swap(p1->heso,p2->heso); swap(p1->somu,p2->somu); } p2=p2->next; } p1=p1->next; } } void xoatruocQ(dathuc &l,node *Q) { node *p; if(Q==NULL) { p=l.cuoi; if(l.dau==l.cuoi) { l.dau=l.cuoi=NULL; delete p; } else if(p!=NULL) { l.cuoi=l.cuoi->pre; l.cuoi->next=NULL; delete p; } } else { p=Q->pre; if(p!=NULL) { if(p==l.dau) { l.dau=l.dau->next; l.dau->pre=NULL; delete p; } else { p->pre->next=Q; Q->pre=p->pre; delete p; } } } } void rutgon(dathuc &l) { node *p1=l.dau,*p2; while(p1!=NULL) { p2=p1->next; while(p2!=NULL) { if(p2->somu==p1->somu) { p1->heso+=p2->heso; p2=p2->next; xoatruocQ(l,p2); } else p2=p2->next; } p1=p1->next; } } void themtruocQ(dathuc &l,node *Q,node *p) { if(Q==l.dau) { l.dau->pre=p; p->next=l.dau; l.dau=p; } else { p->pre=Q->pre; p->next=Q; Q->pre->next=p; Q->pre=p; } } void insert(dathuc &l,node *p) { node *p1=l.dau; while(p1!=NULL && p1->somu > p->somu) p1=p1->next; if(p1!=NULL) { if(p1->somu == p->somu) p1->heso += p->heso; else themtruocQ(l,p1,p); } else themcuoi(l,p); } void xuly(dathuc &l) { node *p=l.dau; while(p!=NULL) { if(p->heso==0) { p=p->next; xoatruocQ(l,p); } else p=p->next; } } int cong(dathuc l1,dathuc l2,dathuc &l) { node *p=l1.dau,*a; while(p!=NULL) { a=taonode(p->heso,p->somu); themcuoi(l,a); p=p->next; } p=l2.dau; while(p!=NULL) { a=taonode(p->heso,p->somu); insert(l,a); xuly(l); p=p->next; } xuly(l); if(l.dau==NULL) return 0; return 1; } int tru(dathuc l1,dathuc l2,dathuc &l) { node *p=l2.dau; while(p!=NULL) { p->heso=-p->heso; p=p->next; } cong(l1,l2,l); p=l2.dau; while(p!=NULL) { p->heso=-p->heso; p=p->next; } if(l.dau==NULL) return 0; return 1; } int nhan(dathuc l1,dathuc l2,dathuc &l) { node *p,*p1,*p2; p2=l2.dau; while(p2!=NULL) { p1=l1.dau; while(p1!=NULL) { p=taonode(p2->heso*p1->heso,p2->somu+p1->somu); insert(l,p); p1=p1->next; } p2=p2->next; } xuly(l); if(l.dau==NULL) return 0; return 1; } void xoacuoi(dathuc &l) { node *p=l.cuoi; if(p==NULL) exit(1); if(l.dau==l.cuoi) { l.dau=l.cuoi=NULL; delete p; } else { l.cuoi=p->pre; l.cuoi->next=NULL; delete p; } } void xoa(dathuc &l) { while(l.dau!=NULL) xoacuoi(l); } void chia(dathuc l1,dathuc l2) { node *p,*p1; dathuc a,b,du; taodathuc(a);taodathuc(b);taodathuc(du); p1=l1.dau; while(p1!=NULL) { p=taonode(p1->heso,p1->somu); themcuoi(du,p); p1=p1->next; } while(du.dau!=NULL && du.dau->somu >= l2.dau->somu) { p=taonode(du.dau->heso / l2.dau->heso,du.dau->somu - l2.dau->somu); themcuoi(a,p); xoa(b); if(nhan(l2,a,b)==0) break; xoa(du); if(tru(l1,b,du)==0) break; } xuat(a); if(du.dau!=NULL) { cout<<"\n du "; xuat(du); } } void main() { dathuc l1,l2,l; taodathuc(l1);taodathuc(l2);taodathuc(l); nhap(l1);nhap(l2); rutgon(l1);sapxep(l1); cout<<"\nda thuc 1 = ";xuat(l1);cout<<endl; rutgon(l2);sapxep(l2); cout<<"\nda thuc 2 = ";xuat(l2);cout<<endl; int k; cout<<"\n\n1.cong da thuc 1+2" <<"\n2.tru da thuc 1-2" <<"\n3.nhan da thuc 1*2" <<"\n4.chia da thuc 1/2\n"; cin>>k; cout<<"ket qua = "; switch(k) { case 1:cong(l1,l2,l);xuat(l);break; case 2:tru(l1,l2,l);xuat(l);break; case 3:nhan(l1,l2,l);xuat(l);break; case 4:chia(l1,l2);break; } cout<<endl; system("pause"); }
trên đây là toàn bộ code của chương trình c/c++ cộng trù nhân chia đa thức bậc n bất kỳ bằng phương pháp sử dụng danh sách liên kết đôi. ← Newer Post Older Post → Home Find us on facebook
Trần Khánh Toànemail: [email protected]://www.laptrinh321.net FaceBook Google Plus-
hệ đếm nhị phân, thập phân và thập lục phân 1. hệ đếm nhị phân: dùng 2 kí số cơ bản là 0 và 1 đổi hệ 10 sang hệ 2 thì chia liên tiếp cho 2 đến khi bằng 0, số dư được viết theo c... -
các hệ thống số cơ bản, nhị phân, bát phân, thập lục phân, thập phân các hệ thống số cơ bản thập phân: gồm các chữ số 0,1,2,3,4,5,6,7,8,9 ví dụ: 576.348 = 5*10^2 + 7*10^1 + 6*10^0 + 3*10^-1 + 4*10^-2 ... -
lập trình tìm các bộ số pitago | lập trình c/c++ lập trình tìm các bộ số pitago | lập trình c/c++. Một tam giác vuông có thể có tất cả các cạnh là các số nguyên. Tập của ba số nguyên của... -
[C/C++] nhập vào họ và tên, in ra tên viết chương trình [C/C++] nhập vào họ và tên , sau đó xử lý chuỗi và in ra tên của người đó. #include<stdio.h> #include<string.h... -
cách XĐ tín hiệu điều khiển từ khối "Control" - Datapath (KTMT) ** Tổng quan các lệnh cần xem xét: (8 lệnh trong 3 nhóm chính của tập lệnh MIPS) § Nhóm lệnh tham khảo bộ nhớ (lw và sw): Nạp... -
viết chương trình c chuyển đổi hệ đếm nhị phân, bát phân, thập lục phân viết chương trình c chuyển đổi hệ đếm nhị phân, bát phân, thập lục phân . DEC,BIN,HEX,OCT. Viết chương trình in bảng của các số từ 1 đế... - OOP C++ cộng trừ nhân chia số phức Làm lại bài số phức với một phương thức thiết lập duy nhất cho phép quan điểm một số thực như một số phức đặc biệt (phần ảo bằng 0). Định ng...
-
[OOP C++] quản lý nhân viên và tính lương cho từng nhân viên bài tập OOP C++. Giả sử Công ty có hai loại nhân viên: Nhân viên văn phòng và Nhân viên sản xuất. Viết chương trình quản lý và tính lương ch... -
xung đột? pipelined và kỹ thuật forwarding, non-forwarding Pipeline là một kỹ thuật mà trong đó các lệnh được thực thi theo kiểu chồng lắp lên nhau. - Cách tiếp cận dùng kỹ thuật pipeline tiêu tố... - 5. Viết chương trình nhập họ tên, điểm toán, điểm văn của một học sinh. Tính điểm trung bình và xuất kết quả. 5. Viết chương trình nhập họ tên, điểm toán, điểm văn của một học sinh. Tính điểm trung bình và xuất kết quả. #include<iostream> us...
Labels
- bai tap c
- bai tap oop
- cau truc cay
- danh sach lien ket
- giai thuat
- giao trinh hoc c
- giao trinh oop
- html
- kien truc may tinh
- lap trinh c
- lap trinh web
- linh tinh
- linux
- mang may tinh
- may tinh
- PHP
- sap xep
- SQL
- tim kiem
Blog Archive
- ► 2016 (6)
- ► March (4)
- ► January (2)
- ► 2014 (66)
- ► December (9)
- ► October (28)
- ► September (29)
Categories
- bai tap c
- bai tap oop
- cau truc cay
- danh sach lien ket
- giai thuat
- giao trinh hoc c
- giao trinh oop
- html
- kien truc may tinh
- lap trinh c
- lap trinh web
- linh tinh
- linux
- mang may tinh
- may tinh
- PHP
- sap xep
- SQL
- tim kiem
BTemplates.com
Đồng Hồ Gỗ, Tượng Gỗ Di Lặc, Phúc Lộc Thọ Dịch Vụ Kế Toán Tại Nhà Kế Toán Copyright © Lập Trình 321 | Powered by Blogger Design by FThemes | Blogger Theme by Lasantha - Premium Blogger Templates | NewBloggerThemes.comTừ khóa » Nhân 2 đa Thức C++
-
Tính Tổng / Hiệu / Tích / Thương 2 đa Thức - Dạy Nhau Học
-
Phép Nhân, Chia 2 đa Thức , Và Tính Giá Trị đa Thức T_T
-
Lập Trình C - Cấu Trúc đa Thức Tính Tổng Và Tích 2 đa Thức... | Facebook
-
Lập Trình C/C++ - Hướng Dẫn Bài Tập đa Thức - YouTube
-
C - Bài Tập 4.19: Tính Giá Trị Của đa Thức - YouTube
-
Cộng Nhân Hai đa Thức
-
C++ Code - 81 Lines - Codepad
-
Viết CT Thực Hiện Các Thao Tác Trên đa Thức - Help Me !!!
-
Giúp Mình Bài /* Tính đa Thức C Là Tổng Của 2 đa Thức A Bậc M & đa ...
-
Viết Chương Trình Cho Phép Nhân Hai đa Thức đã Sắp Xếp
-
CÁC PHÉP TÍNH TRÊN ĐA THỨC - Stormcodes
-
[PDF] BÀI TẬP
-
Xử Lý đa Thức Bằng Danh Sách Liên Kết - TaiLieu.VN




