luyuxianseng 2014-08-25 03:30 采纳率: 0%
浏览 844

求大神按照要求用c++帮我解决

24.设计多项式类Polynomial,实现两多项式相加。具体要求如下:
(1)私有数据成员
·double a[10][2]; 存放多项式,包含一个系数和一个指数。例如:2X4的系数为2,指数为4。
·int n; 存放多项式的项数
(2)公有成员函数
·Polynomial (double b[][2],int x) ; 定义构造函数,给私有数据成员初始化。
·Polynomial operator + (Polynomial); 重载运算符+,实现两个多项式相加。
·Polynomial operator += (Polynomial &); 重载运算符+=,实现两个多项式相加赋值。
·Polynomial operator = (Polynomial &); 重载运算符=,实现多项式赋值。
·void print(); 输出多项式。
(3)在主函数中完成对Polynomial类的测试。

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-05-26 22:44
    关注

    该回答引用ChatGPT-3.5

    下面是按照您的要求使用C++实现的Polynomial类及其成员函数:

    #include <iostream>
    
    class Polynomial {
    private:
        double a[10][2];
        int n;
    
    public:
        Polynomial(double b[][2], int x) {
            n = x;
            for (int i = 0; i < n; i++) {
                a[i][0] = b[i][0];
                a[i][1] = b[i][1];
            }
        }
    
        Polynomial operator+(Polynomial poly) {
            Polynomial result(*this);
            int i, j, k;
            i = j = k = 0;
    
            while (i < n && j < poly.n) {
                if (a[i][1] > poly.a[j][1]) {
                    result.a[k][0] = a[i][0];
                    result.a[k][1] = a[i][1];
                    i++;
                } else if (a[i][1] < poly.a[j][1]) {
                    result.a[k][0] = poly.a[j][0];
                    result.a[k][1] = poly.a[j][1];
                    j++;
                } else {
                    result.a[k][0] = a[i][0] + poly.a[j][0];
                    result.a[k][1] = a[i][1];
                    i++;
                    j++;
                }
                k++;
            }
    
            while (i < n) {
                result.a[k][0] = a[i][0];
                result.a[k][1] = a[i][1];
                i++;
                k++;
            }
    
            while (j < poly.n) {
                result.a[k][0] = poly.a[j][0];
                result.a[k][1] = poly.a[j][1];
                j++;
                k++;
            }
    
            result.n = k;
            return result;
        }
    
        Polynomial operator+=(Polynomial& poly) {
            *this = *this + poly;
            return *this;
        }
    
        Polynomial operator=(Polynomial& poly) {
            n = poly.n;
            for (int i = 0; i < n; i++) {
                a[i][0] = poly.a[i][0];
                a[i][1] = poly.a[i][1];
            }
            return *this;
        }
    
        void print() {
            for (int i = 0; i < n; i++) {
                std::cout << a[i][0] << "X^" << a[i][1];
                if (i != n - 1) {
                    std::cout << " + ";
                }
            }
            std::cout << std::endl;
        }
    };
    
    int main() {
        double poly1[3][2] = { {2, 4}, {3, 2}, {1, 0} };
        double poly2[4][2] = { {1, 3}, {-2, 2}, {4, 1}, {5, 0} };
    
        Polynomial p1(poly1, 3);
        Polynomial p2(poly2, 4);
    
        Polynomial p3 = p1 + p2;
        p3.print();
    
        p1 += p2;
        p1.print();
    
        Polynomial p4 = p2;
        p4.print();
    
        return 0;
    }
    

    这段代码实现了Polynomial类,其中构造函数Polynomial(double b[][2], int x)用于初始化多项式的私有数据成员,operator+重载了加法运算符用于两个


    多项式的相加,operator+=重载了加等运算符用于两个多项式相加并赋值,operator=重载了赋值运算符用于多项式的赋值,print函数用于输出多项式。


    在主函数中,我们创建了两个多项式p1p2,并进行了测试,输出了相加后的多项式以及使用+=运算符进行相加赋值后的结果。


    请注意,这段代码中假设每个多项式的最大项数为10,可以根据需要进行调整。同时,未在代码中进行输入验证,假设输入的多项式数据格式正确。

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)