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
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"); }![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3Z9awyNc-9Y5YBdimKLKTZgKgpFBbysILQ-WXPYwKEtwHqT5tjqielCZCrxtthIRg_GnW3wTmAs0hF_kbUHogt1N-zC_xOnTs86t_5O0KMKxhd8rKXCuhXn2izRJ4jtKc6bOcWYduHqQ/s320/Screenshot+(6).png)
Find us on facebook
Trần Khánh Toànemail: Trankhanhtoan321@gmail.comhttp://www.laptrinh321.net FaceBook Google Plus-
[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&g...
-
[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...
-
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...
- code javascript tạo pop up like fanpage facebook tạo pop up like fanpage facebook cho web,blog, code javascript like facebook, hiển thị theo cookie, không làm phiền khách. chỉ cần dán code ...
-
tìm giá trị xuất hiện nhiều nhất trong mảng và số lần xuất hiện lập trình c tìm phần tử xuất hiện nhiều nhất trong mảng và số lần xuất hiện của phần tử đó #include<stdio.h> #include<conio.h...
-
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 ...
- hiệu suất máy tính và cách tính hiệu suất, các thông số liên quan execution time: thời gian thực thi (s) performance:hiệu suất clock cycle: chu kỳ xung đồng hồ clock rate: số clock cycle thực hiện trong ...
-
[C++] Tìm ma trận nghịch đảo của 1 ma trận vuông cấp n tùy ý [C++] Tìm ma trận nghịch đảo của 1 ma trận vuông cấp n tùy ý #include<iostream> #include<iomanip> using namespace std; void nhap...
-
[C/C++] chương trình quản lý sách Viết chương trình quản lí sách. Mỗi cuốn sách gồm tên sách, tên nhà xuất bản, năm xuất bản, giá tiền, số lượng: a. Đưa ra danh sách các cuố...
- 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...
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 » Chia 2 đa Thức C++
-
Tính Tổng / Hiệu / Tích / Thương 2 đa Thức - Dạy Nhau Học
-
Top 14 Chia 2 đa Thức C++
-
Phép Nhân, Chia 2 đa Thức , Và Tính Giá Trị đa Thức T_T
-
Viết Chương Trình Cho Phép Chia Hai đa Thức để Tìm đa Thức Thương
-
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
-
Lập Trình C - Cấu Trúc đa Thức Tính Tổng Và Tích 2 đa Thức... | Facebook
-
CÁC PHÉP TÍNH TRÊN ĐA THỨC - Stormcodes
-
Bài Tập C++ : Chia đa Thức - CodeHandbook
-
[PDF] NGÔN NGỮ LẬP TRÌNH C/C++
-
C Code - 159 Lines - Codepad
-
Viết CT Thực Hiện Các Thao Tác Trên đa Thức - Help Me !!!
-
1000 Bài Tập Lập Trình C/C++ Có Lời Giải Giành Cho SV - Linkerpt