• 实验6


    6-1:芯片

    chip.h

     1 class chip0 {
     2 public:
     3     chip0(int x, int y) :m(x), n(y) {};                            //构造函数
     4     int plu() { return m + n; };
     5     int const Getm() { return m; };                                //返回私有函数值
     6     int const Getn() { return n; };
     7 private:
     8     int m;
     9     int n;
    10 };
    11 
    12 class chipA :public chip0 {                                        //减法芯片实现
    13 public:
    14     chipA(int x, int y) :chip0(x, y) {};
    15     int min() { return Getm() - Getn(); };
    16 };
    17 
    18 class chipB :public chip0 {                                        //乘法芯片实现
    19 public:
    20     chipB(int x, int y) :chip0(x, y) {};
    21     int mul() { return Getm() * Getn(); };
    22 };
    23 
    24 class chipC :public chip0 {                                        //除法芯片实现
    25 public:
    26     chipC(int x, int y) :chip0(x, y) {};
    27     int div() { return Getm() / Getn(); };
    28 };

    main.cpp

    #include<iostream>
    #include"chip.h"
    using namespace std;
    int main()
    {
        chipA A(6, 2);                //初始化芯片
        chipB B(6, 2);
        chipC C(6, 2);
        cout << "m=6 n=2" << endl << "m+n=" << A.plu() << endl << "m-n=" << A.min() << endl << "m*n=" << B.mul() << endl << "m/n=" << C.div() << endl;
        return 0;
    }

    6-2:vehicle类

    vehicle.h

     1 #include<iostream>
     2 using namespace std;
     3 class vehicle {                                             //类定义
     4 public:
     5     vehicle(int x, int y) :maxspeed(x), weight(y) { cout << "maxseppd=  " << maxspeed << endl<< "weight=  " << weight << endl; };
     6     void run() { cout << "run" << endl; };
     7     void stop() { cout << "stop" << endl; };
     8 private:
     9     int maxspeed;
    10     int weight;
    11 };
    12 
    13 class bicycle :virtual public vehicle {
    14 public:
    15     bicycle(int x, int y, int z) :vehicle(x, y), height(z) { cout << "height=  " << height << endl; };//派生构造虚基类
    16 private:
    17     int height;
    18 };
    19 
    20 class motocar :virtual public vehicle {
    21 public:
    22     motocar(int x, int y, int z) :vehicle(x, y), seatnum(z) { cout << "seatnum=  " << seatnum << endl; };
    23 private:
    24     int seatnum;
    25 };
    26 
    27 class motocycle :public bicycle, public motocar {
    28 public:
    29     motocycle(int a, int b, int c, int d) :vehicle(a, b), bicycle(a, b, c), motocar(a, b, d) {};//构造函数定义
    30 };

    mian.cpp

     1 #include<iostream>
     2 #include"vehicle"
     3 using namespace std;
     4 int main()
     5 {
     6     motocycle M(1, 2, 3, 4);       //初始化一个motocycle
     7     M.run();
     8     M.stop();
     9     return 0;
    10 }

    6-3:iFraction(规范化处理函数施工中……)

    Fraction.h

     1 class Fraction {
     2 public:
     3     Fraction();
     4     Fraction(int t, int b);
     5     Fraction(int t);
     6     void show();
     7     void compare(Fraction &f1);//比较函数
     8     int gongyinshu(int a, int b);//求公因数
     9     void transform();//转换函数
    10     int gettop();
    11     int getbottom();
    12     Fraction operator+(Fraction &f0) {
    13         Fraction f;
    14         f.top = top *f0.bottom + f0.top*bottom;
    15         f.bottom = bottom*f0.bottom;
    16         return f;
    17     };//重载+
    18     Fraction operator-(Fraction &f0) {
    19         Fraction f;
    20         f.top = top *f0.bottom - f0.top*bottom;
    21         f.bottom = bottom*f0.bottom;
    22         return f;
    23     };//重载-
    24     Fraction operator*(Fraction &f0) {
    25         Fraction f;
    26         f.top *= f0.top;
    27         f.bottom *= f0.bottom;
    28         return f;
    29     };//重载*
    30     Fraction operator/(Fraction &f0) {
    31         Fraction f;
    32         f.top *= f0.bottom;
    33         f.bottom *= f0.top;
    34         return f;
    35     };//重载/
    36 private:
    37     int top;            //分子
    38     int bottom;            //分母
    39 };

    iFraction.h

     1 #include"Fraction.h"
     2 class iFraction :public Fraction {
     3 public:
     4     iFraction();                          //新构造函数
     5     iFraction(int x);
     6     iFraction(int x, int y);
     7     iFraction(int x, int y, int z);
     8     void ishow();
     9 private:
    10     int side;                               //带分数的整数部分    
    11 };        

    Fraction.cpp

     1 #include <iostream>
     2 #include "Fraction.h"
     3 using namespace std;
     4 Fraction::Fraction() :top(0), bottom(1) {}                            //初始化
     5 Fraction::Fraction(int t, int b) : top(t), bottom(b) {}
     6 Fraction::Fraction(int t) : top(t), bottom(1) {}
     7 
     8 
     9 void Fraction::show() {                                              //输出分数
    10     int a, b, c, d, e, f, g;
    11     a = top;
    12     b = bottom;
    13     c = 0; d = 0; f = 0;
    14     do {
    15         c++;                                                        //判断分子分母的位数
    16         a /= 10;
    17     } while (a > 0);
    18     do {
    19         d++;
    20         b /= 10;
    21     } while (b > 0);
    22     e = (c > d ? c : d);
    23     g = gongyinshu(abs(top), abs(bottom));                            //求最大公因数
    24     top /= g; bottom /= g;                                            //化简
    25     if (bottom <= 0) {                                              //规范分数
    26         bottom = -bottom;
    27         top = -top;
    28     }
    29     cout << top << endl;                                            //输出分子
    30     do {
    31         f++;
    32         cout << "-";                                                //根据位数输出横线长度
    33     } while (f < e);
    34     cout << endl << bottom << endl;                                    //输出分母
    35 }
    36 
    37 void Fraction::compare(Fraction &f1) {
    38     double real0 = double(top) / double(bottom);                    //强制转换为double类型,换成小数比较
    39     double real1 = double(f1.top) / double(f1.bottom);
    40     if (real0 > real1)
    41         cout << "第一个数大于第二个数";
    42     else if (real0 == real1)
    43         cout << "相等";
    44     else
    45         cout << "第一个数小于第二个数";
    46 }
    47 
    48 int Fraction::gongyinshu(int a, int b) {                                //求最大公因数                                            
    49     int t;                                                            //假设a>b,如果a不能被b整除,则将b赋值给a,
    50     if (a < b)                                                        //余数赋值给b,重复执行a%b,直到a能够被b整除。此时返回b的值,则为最大公约数。
    51     {
    52         t = a;
    53         a = b;
    54         b = t;
    55     }
    56     while (b != 0)
    57     {
    58         t = a % b;
    59         a = b;
    60         b = t;
    61     }
    62     return a;                                                            //返回最大公因数
    63 }
    64 
    65 void Fraction::transform() {                                        //转换为十进制
    66     double real0 = double(top) / double(bottom);
    67     cout << "转换为十进制为:" << real0;
    68 }
    69 
    70 int Fraction::gettop() { return top; }                    //访问top
    71 int Fraction::getbottom() { return bottom; }          //访问bottom

    iFraction.cpp

     1 #include"iFraction.h"
     2 #include<iostream>
     3 using namespace std;
     4 
     5 iFraction::iFraction() :Fraction() {};
     6 iFraction::iFraction(int x) :Fraction(x) {};
     7 iFraction::iFraction(int x,int y) :Fraction(x,y) {};
     8 iFraction::iFraction(int x, int y,int z) :Fraction(x,y),side(z) {};
     9 
    10 void iFraction::ishow() {
    11     int a, b, c, d, e, f,g,h;
    12     a = gettop();
    13     b = getbottom();
    14     g = side;
    15     c = 0; d = 0; f = 0; h = 0;
    16     do {
    17         c++;                                                        //判断分子分母的位数
    18         a /= 10;
    19     } while (a > 0);
    20     do {
    21         d++;
    22         b /= 10;
    23     } while (b > 0);
    24     do {                                                            //输出空格
    25         h++;
    26         g /= 10;
    27     } while (g > 0);
    28     e = (c > d ? c : d);
    29     c = 0;
    30     do {
    31         c++;
    32         cout << " ";
    33     } while (c < h);
    34     cout << gettop() << endl;                                            //输出分子
    35     cout << side;                                                    //输出整数
    36     do {
    37         f++;
    38         cout << "-";                                                //根据位数输出横线长度
    39     } while (f < e);
    40     cout << endl;
    41     c = 0;
    42     do {                                                            //输出空格
    43         c++;
    44         cout << " ";
    45     } while (c < h);
    46     cout << getbottom() << endl;                                    //输出分母
    47 }

    main.cpp

     1 #include<iostream>
     2 #include"iFraction.h"
     3 using namespace std;
     4 int main()
     5 {
     6     Fraction b(2,5);
     7     Fraction c(2,3);
     8     iFraction d(205, 3111, 11);
     9     d.ishow();                        //输出带分数
    10     b = b + c;                        //使用重载运算符计算
    11     cout << "计算2/5+2/3=" << endl;
    12     b.show();
    13     return 0;
    14 }

    存在问题:由于Fraction类是照抄实验4,没有优化,写的很乱,重载+-*/也没有放在.cpp里

    6-4:RPG游戏

    https://www.cnblogs.com/zhibifenli/p/9130637.html

  • 相关阅读:
    企业微信授权微信开发者工具
    liunx Python3中pip3安装模块出错,找不到SSL
    superagent 调用java接口,处理http请求
    Android开发一 application 应用界面主题Theme使用方法
    HTML5的Video标签的属性,方法和事件汇总
    多个select下拉框,选中当前某一项,其他下拉框去掉选中的值
    input range滑块插件 Powerange
    thinkphp 获取session的方法
    thinkphp I()方法获取不到ajax传值
    js验证图片上传大小,格式以及宽高
  • 原文地址:https://www.cnblogs.com/zhibifenli/p/9127322.html
Copyright © 2020-2023  润新知