日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++实现多项式类定义

發布時間:2023/12/14 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++实现多项式类定义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?c++實現多項式類的定義,可進行+、-、*、賦值運算,可顯示已存儲幾個多項式對象,可計算任意x值下多項式的值。

//************************************************************************* //polynomial.h //************************************************************************* #pragma once #include<iostream> #include<cmath>using namespace std;class Node { //結點類 private:float coe; //系數int exp; //指數Node* next; public:friend class Polynomial;Node(float c, int e, Node* n = NULL) :coe(c), exp(e), next(n) { /*cout << "Node constructor called" << endl;*/ }//構造函數~Node() { /*cout << "Node destructor called" << endl;*/} //析構函數 inline Node* Add_Node(float c, int e); //當前結點后添加結點 void Clear_Node(); //清理結點friend Polynomial operator+(const Polynomial& a, const Polynomial& b); //重載"+"運算符friend Polynomial operator-(const Polynomial& a, const Polynomial& b); //重載"-"運算符friend Polynomial operator*(const Polynomial& a, const Polynomial& b); //重載"*"運算符 }; inline Node* Node::Add_Node(float c, int e) {Node* n = new Node(c, e);this->next = n;return n; }class Polynomial { //多項式類 private:static int count;Node* head; public:Polynomial() { Node* p = new Node(0, 0); head = p; count++; } //重載無參構造函數Polynomial(Node* l) :head(l) { /*cout << "Polynomial constructor called" << endl;*/ count++; } //構造函數Polynomial(const Polynomial& o); //拷貝構造函數~Polynomial() { /*cout << "Polynomial destructor called" << endl;*/ count--; } //析構函數inline void set(Node* p); //后期修改函數inline void clear(); //清理函數friend inline void print_count(); //輸出多項式總數void print()const; //輸出函數float compute(float x)const; //計算函數int seek_max()const; //尋找最高次數friend Polynomial operator+(const Polynomial& a, const Polynomial& b); //重載"+"運算符friend Polynomial operator-(const Polynomial& a, const Polynomial& b); //重載"-"運算符friend Polynomial operator*(const Polynomial& a, const Polynomial& b); //重載"*"運算符Polynomial& operator=(const Polynomial& that); //重載"="運算符 }; inline void Polynomial::set(Node* p) {this->head = p; } inline void Polynomial::clear() {this->head->Clear_Node(); }inline void print_count() {cout << "共存儲" << Polynomial::count << "個多項式" << endl; }

?以下為具體功能實現

//************************************************************************* //polynomial.cpp //************************************************************************* #include"polynomial.h"void Node::Clear_Node() {Node* p = this;Node* q = p;while (p) {q = p->next;delete p;p = q;} }Polynomial::Polynomial(const Polynomial& o) {//拷貝構造函數Node* O = o.head;Node* a = new Node(O->coe,O->exp);Node* p = a;O = O->next;while (O) {a = a->Add_Node(O->coe, O->exp);O = O->next;}this->head = p;count++;/*cout << "Polynomial copy constructor called" << endl;*/ }void Polynomial::print() const {Node* p = this->head;bool flag = false;while (p) {if (p->coe != 0) {if (p->coe > 0) {if(flag)cout << "+";}if (p->exp == 0)cout << p->coe;else if (p->exp == 1) {if (p->coe == 1);else if (p->coe == -1)cout << "-";else cout << p->coe;cout << "x";}else {if (p->coe == 1);else if (p->coe == -1)cout << "-";else cout << p->coe;cout << "x^" << p->exp;}}p = p->next;flag = true;}cout << endl; }float Polynomial::compute(float x)const {float result=0;Node* p = this->head;while (p) {result = result + p->coe * pow(x, p->exp);p = p->next;}return result; }int Polynomial::seek_max()const {Node* p = this->head;int max = p->exp;while (p) {if (p->exp > max)max = p->exp;p = p->next;}return max; }Polynomial operator+(const Polynomial& a, const Polynomial& b) {Node* p = a.head;Node* q = b.head;Node* h = NULL;Node* s = NULL;int max = 0;float x = 0;int A = a.seek_max();int B = b.seek_max();max = A > B ? A : B;for (int i = 0; i <= max; i++){while (p) {if (p->exp == i) {x = x + p->coe;}p = p->next;}while (q) {if (q->exp == i) {x = x + q->coe;}q = q->next;}if (x) {if (h) s = s->Add_Node(x, i);else {h = new Node(x, i);s = h;}}x = 0;p = a.head;q = b.head;}Polynomial C(h);return C; }Polynomial operator-(const Polynomial& a, const Polynomial& b) {Node* p = a.head;Node* q = b.head;Node* h = NULL;Node* s = NULL;int max = 0;float x = 0;max = a.seek_max() > b.seek_max() ? a.seek_max() : b.seek_max();for (int i = 0; i <= max; i++) {while (p) {if (p->exp == i) {x = x + p->coe;}p = p->next;}while (q) {if (q->exp == i) {x = x - q->coe;}q = q->next;}if (x) {if (h) s = s->Add_Node(x, i);else {h = new Node(x, i);s = h;}}x = 0;p = a.head;q = b.head;}Polynomial C(h);return C; }Polynomial operator*(const Polynomial& a, const Polynomial& b) {Node* p = a.head;Node* q = b.head;Node* h = NULL;Node* s = NULL;Polynomial C;Polynomial P;while (p) {while (q) {if (h) s = s->Add_Node(p->coe * q->coe, p->exp + q->exp);else {h = new Node(p->coe * q->coe, p->exp + q->exp);s = h;}q = q->next;}p = p->next;q = b.head;P.set(h);h = NULL;s = NULL;C = C + P;}return C; }Polynomial& Polynomial::operator=(const Polynomial& that) {Node* q = that.head;Node* p = this->head;Node* s = p;Node* h = NULL;while (q) {if (p) {p->coe = q->coe;p->exp = q->exp;s = p;p = p->next;}else {h = new Node(q->coe, q->exp);p = h;s->next = p;s = p;p = p->next;}q = q->next;}return *this; }

以下為測試代碼

//******************************************************************** //main.cpp //******************************************************************** #include"polynomial.h"int Polynomial::count = 0;int main() {Node* a = new Node(5, 0);a->Add_Node(-1,1)->Add_Node(4, 2)->Add_Node(2.1, 3)->Add_Node(-9, 4);Node* b = new Node(7, 1);b->Add_Node(8.2, 4)->Add_Node(6, 2)->Add_Node(4, 5)->Add_Node(-3, 3);Polynomial A(a);A.print();print_count();Polynomial B(b);B.print();print_count();cout << "A(x = 3) = " << A.compute(3) << endl;cout << "B(x = 2) = " << B.compute(2) << endl;Polynomial C;C = A + B;cout << "A + B = ";C.print();C = A - B;cout << "A - B = ";C.print();C = B - A;cout << "B - A = ";C.print();C = A * B;cout << "A * B = ";C.print();print_count();Polynomial D(A);D.print();D = B;D.print();print_count();system("pause");A.clear();B.clear();C.clear();D.clear();return 0; }

測試結果如下:

5-x+4x^2+2.1x^3-9x^4 共存儲1個多項式 7x+8.2x^4+6x^2+4x^5-3x^3 共存儲2個多項式 A(x = 3) = -634.3 B(x = 2) = 273.2 A + B = 5+6x+10x^2-0.9x^3-0.8x^4+4x^5 A - B = 5-8x-2x^2+5.1x^3-17.2x^4-4x^5 B - A = -5+8x+2x^2-5.1x^3+17.2x^4+4x^5 A * B = 35x+23x^2+7x^3+82.7x^4-50.6x^5-31.5x^6+60.22x^7-65.4x^8-36x^9 共存儲3個多項式 5-x+4x^2+2.1x^3-9x^4 7x+8.2x^4+6x^2+4x^5-3x^3 共存儲4個多項式

總結

以上是生活随笔為你收集整理的c++实现多项式类定义的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 校园春色综合 | 99热97| 免费av观看| 五号特工组之偷天换月 | 精品国产午夜福利 | 久婷婷 | 一级特黄妇女高潮2 | 91高清视频在线 | 国产偷人视频 | 91美女在线视频 | 黄色小视频大全 | 在线看日本 | 小草av在线| 免费在线观看一区二区三区 | 麻豆传媒观看 | 宿舍女女闺蜜调教羞辱 | 欧美成人福利 | av猫咪| 亚洲激情免费 | 欧美性猛交乱大交 | 一二三四国产精品 | 特级黄色一级片 | 午夜影院入口 | 国产aⅴ爽av久久久久成人 | 欧美日韩久久 | www欧美日韩 | 日本人毛片 | 美女扒开腿男人爽桶 | 亚洲国产午夜 | 蜜桃精品视频 | 日韩精品 欧美 | 人妻在线日韩免费视频 | 都市激情男人天堂 | 超碰激情在线 | 美女免费视频网站 | 黄色网址多少 | 婷婷亚洲天堂 | 色综合久久久久综合体桃花网 | 日日摸夜夜添夜夜 | 欧美大片在线看免费观看 | 欧美人与动物xxx | 欧美激情视频一区二区三区不卡 | 久久久久无码国产精品一区李宗瑞 | 亚洲欧美日韩在线播放 | 色偷偷av一区二区三区 | 国产精品成人99一区无码 | gogo亚洲国模私拍人体 | 俄罗斯美女一级爱片 | 五月婷六月 | 久久免费黄色网址 | 色哟哟免费观看 | 国产一卡在线 | 巨茎大战刘亦菲 | 强行糟蹋人妻hd中文字幕 | 国产第一精品 | 网站国产| 欧美日韩69| 色视频在线观看免费 | 91av影视| 狠狠干天天射 | 毛片无码一区二区三区a片视频 | 欧美成人777 | 97福利网| 玖玖网 | 天天搞夜夜爽 | 大战熟女丰满人妻av | 亚洲精品一区二区三区在线 | 丰满少妇在线观看bd | 欧美激情在线一区 | 亚洲国产久 | 国产69精品一区二区 | 精品国产一区二区三区性色 | 亚洲精品高潮久久久久久久 | 五月天黄色小说 | 久久无毛| 国产精品白丝喷水在线观看 | 国产精品尤物视频 | 亚洲午夜国产 | 欧洲国产视频 | 国产精品乱码 | 精品无码黑人又粗又大又长 | aa一级片 | 91久久久久久久久久久久久 | 国产精品偷伦视频免费观看了 | 91精品系列 | 91亚洲成人| av免费播放网站 | 一区二区成人网 | 欧美日韩视频 | 亚洲日本免费 | 九九亚洲| 91性高潮久久久久久久久 | av影视在线观看 | 亚洲码在线观看 | 午夜激情国产 | 91精品国产乱码久久久久 | 国内自拍视频在线播放 | 国产在线伊人 | 久久影院午夜理论片无码 |