首页 > 编程语言 > 详细

西安交通大学c++[mooc]课后题12章(只有后两题)

时间:2020-05-08 23:03:30      阅读:66      评论:0      收藏:0      [点我收藏+]

不是从第一题开始的,因为我刚准备把代码粘到CSDN上面,可以给自己看,也有可能启发后来者。

机会是留给有准备的人的 ?????——路易斯·巴斯德

4.重载矩阵加法运算

MATRIX就是矩阵的意思

#include <iostream>

using namespace std;
class MATRIX
{
private:
    int h,l;
    double a[100][100];
public:
    MATRIX(){}
    void set(int h,int l)
    {
        this->h = h;
        this->l = l;
        for(int i=0;i < h;i++)
        {
            for(int j=0;j < l;j++)
            {
                cin >> a[i][j];
            }
        }
    }
    MATRIX operator + (MATRIX b)
    {
        MATRIX c;
        c.h = h;
        c.l = l;
        for(int i=0;i < h;i++)
        {
            for(int j=0;j < l;j++)
            {
                c.a[i][j] = a[i][j] + b.a[i][j];
            }
        }
        return c;
    }
    void show()
    {
        for(int i=0;i < h;i++)
        {
            for(int j=0;j < l;j++)
            {
                cout << a[i][j];
                if(j != l-1)
                {
                    cout << " ";
                }
            }
            cout << endl;
        }
    }
};

int main()
{
    int h=0,l=0;
    cin >> h >> l;
    MATRIX a,b,c;
    a.set(h,l);
    b.set(h,l);
    c = a + b;
    c.show();
    return 0;
}
//个人感觉这篇文章还是新手友好的

5.纯虚函数与基类指针数组的应用

以下是题干信息

题目内容:

定义抽象基类Shape, 
其中纯虚函数printName()输出几何图形的名称和相应的成员数据、纯虚函数printArea()计算几何图形的面积。并由Shape类派生出5个派生类:Circle(圆形),数据成员为半径、Square(正方形) 
,数据成员为边长、Rectangle(长方形) ,数据成员为长和宽、Trapezoid(梯形) ,数据成员为上底、下底和高、Triangle(三角形) 
,数据成员为底和高。测试过程,定义一个指向基类的指针数组,使其每个元素指向一个动态产生的派生类对象,分别调用相应的成员函数显示各个几何图形的属性及面积,最终输出总面积值。


输入格式:

依次输入圆半径、正方形边长、长方形长宽、梯形上底下底和高、三角形底边和高,均为实数。


输出格式:

请参考输出样例,建议直接复制样例中的部分文字粘贴进自己的代码。圆周率取 3.14159

注意输出中的标点符号、空格。

输入样例:

10
5
2 4
1 2 3
4 3


输出样例:

圆:半径=10,面积:314.159
正方形:边长=5,面积:25
长方形:长=2,宽=4,面积:8
梯形:上底=1,下底=2,高=3,面积:4.5
三角形:底边=4,高=3,面积:6
总面积:357.659

??此题没什么技巧,就是耗时间嘛。但是如果你实在不会,希望你可以从文章里得到一些启示

#include <iostream>

using namespace std;
class Shape
{
public:
    virtual double printArea() = 0;
    virtual void printName() = 0;
};
class Circle:public Shape
{
private:
    double radius;
public:
    Circle(double r)
    {
        radius = r;
    }
    double printArea()
    {
        return 3.14159 * radius * radius;
    }
    void printName()
    {
        cout << "圆:半径=" << radius << ",面积:";
        cout << printArea() << endl;
    }
};
class Square:public Shape
{
private:
    double a;
public:
    Square(double a)
    {
        this->a = a;
    }
    double printArea()
    {
        return a * a;
    }
    void printName()
    {
        cout << "正方形:边长=" << a << ",面积:";
        cout << printArea() << endl;
    }
};
class Rectangle:public Shape
{
private:
    double a,b;
public:
    Rectangle(double a,double b)
    {
        this->a = a;
        this->b = b;
    }
    double printArea()
    {
        return a * b;
    }
    void printName()
    {
        cout << "长方形:长=" << a << ",宽=" << b << ",面积:";
        cout << printArea() << endl;
    }
};
class Trapezoid:public Shape
{
private:
    double a,b,h;
public:
    Trapezoid(double a, double b, double h)
    {
        this->a = a;
        this->b = b;
        this->h = h;
    }
    double printArea()
    {
        return 0.5 * (a + b) * h;
    }
    void printName()
    {
        cout << "梯形:上底=" << a << ",下底=" << b << ",高=" << h << ",面积:";
        cout << printArea() << endl;
    }
};
class Triangle:public Shape
{
private:
    double a,h;
public:
    Triangle(double a,double h)
    {
        this->a = a;
        this->h = h;
    }
    double printArea()
    {
        return 0.5 * a * h;
    }
    void printName()
    {
        cout << "三角形:底边=" << a << ",高=" << h << ",面积:";
        cout << printArea() << endl;
    }
};

int main()
{
    Shape *p1,*p2,*p3,*p4,*p5;  //基类对象指针
    double r,a,b,h;  //临时变量
    double sum;
    cin >> r;
    p1 = new Circle(r);
    cin >> a;
    p2 = new Square(a);
    cin >> a >> b;
    p3 = new Rectangle(a,b);
    cin >> a >> b >> h;
    p4 = new Trapezoid(a,b,h);
    cin >> a >> h;
    p5 = new Triangle(a,h);
    p1->printName();
    p2->printName();
    p3->printName();
    p4->printName();
    p5->printName();
    sum = p1->printArea() + p2->printArea() + p3->printArea() + p4->printArea() + p5->printArea();
    cout << "总面积:" << sum << endl;
    return 0;
}

好了,这周的内容到此结束

西安交通大学c++[mooc]课后题12章(只有后两题)

原文:https://www.cnblogs.com/a16n/p/12853172.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!