zoukankan      html  css  js  c++  java
  • 实验4 类与对象2

    实验结论

    1.实验内容2

    (1)类graph的成员draw()中算法的简洁描述:
    最外层for循环用来控制行数,for循环内第一个for循环用来输出符号前的空格(“总行数-当前行数”个空格),第二个for循环用来输出符号(“2*当前行数-1”个符号),一行输出完毕后,换至下一行,直至输出所有行。

    (2)文件源码

    • graph.h
    #ifndef GRAPH_H
    #define GRAPH_H
    
    // 类Graph的声明
    class Graph {
    public:
        Graph(char ch, int n);   // 带有参数的构造函数
        void draw();     // 绘制图形
    private:
        char symbol;
        int size;
    };
    #endif
    
    • graph.cpp
    // 类graph的实现
    
    #include "graph.h"
    #include <iostream>
    using namespace std;
    
    // 带参数的构造函数的实现
    Graph::Graph(char ch, int n): symbol(ch), size(n) {
    }
    
    // 成员函数draw()的实现
    // 功能:绘制size行,显示字符为symbol的指定图形样式
    // size和symbol是类Graph的私有成员数据
    void Graph::draw() {
        for (int i=1;i<=size;i++){        //控制行数
            for (int j=1;j<=size-i;j++){    //输出符号前的空格
                cout<<' ';
            }
            for (int m=1;m<=2*i-1;m++){     //输出图案符号
                cout<<symbol;
            }
            cout<<endl;                 //换至下一行
        }
    }
    
    • main.cpp
    #include <iostream>
    #include "graph.h"
    using namespace std;
    int main() {
        Graph graph1('*',5), graph2('$',7) ;  // 定义Graph类对象graph1, graph2
        graph1.draw(); // 通过对象graph1调用公共接口draw()在屏幕上绘制图形
        graph2.draw(); // 通过对象graph2调用公共接口draw()在屏幕上绘制图形
        
        return 0;
    }
    

    (3) Xcode 下运行结果截图:

    2.实验内容3

    (1)类Fraction的类图

    Fraction

    -top:int

    -bottom:int

    +Fraction()

    +Fraction(t:int,b:int)

    +Fraction(t:int)

    +Fraction(f0:Fraction)

    +add(f0:Fraction):void

    +min(f0:Fraction) :void

    +mul(f0:Fraction) :void

    +div(f0:Fraction):void

    +Compare(f0:Fraction):void

    +set() :void

    +show() :void

    (2)文件源码

    Fraction.h

    #ifndef Fraction_h
    #define Fraction_h
    // 类Fraction的声明
    class Fraction {
    public:
        Fraction();            //构造函数
        Fraction(int t, int b);  //构造函数的重载
        Fraction(int t);         //构造函数的重载
        void add(Fraction &f0);//加法函数
        void min(Fraction &f0);//减法函数
        void mul(Fraction &f0);//乘法函数
        void div(Fraction &f0);//除法函数
        void Compare(Fraction &f0);//比较函数
        void set();                //输入函数
        void show();              //输出函数
        
    private:
        int top;       //分子
        int bottom;    //分母
    };
    
    #endif /* Fraction_h */
    

    Fraction.cpp

    #include "Fraction.h"
    #include <iostream>
    using namespace std;
    
    //构造函数
    Fraction::Fraction():top(0), bottom(1) {
    }
    
    //构造函数的重载
    Fraction::Fraction(int t,int b):top(t), bottom(b){
    }
    
    //构造函数的重载
    Fraction::Fraction(int t):top(t), bottom(1) {
    }
    
    //输入函数
    void Fraction::set(){
        cin>>top>>bottom;
    }
    
    //输出函数
    void Fraction::show(){
        cout << top << "/" << bottom <<endl;
    }
    
    //加法函数
    void Fraction::add(Fraction &f0){
        Fraction f1;
        f1.top = top * f0.bottom + f0.top * bottom;
        f1.bottom = bottom * f0.bottom;
        f1.show();
    }
    
    //减法函数
    void Fraction::min(Fraction &f0){
        Fraction f1;
        f1.top = top * f0.bottom - f0.top * bottom;
        f1.bottom = bottom * f0.bottom;
        f1.show();
    }
    
    //乘法函数
    void Fraction::mul(Fraction &f0){
        Fraction f1;
        f1.top = top * f0.top;
        f1.bottom = bottom * f0.bottom;
        f1.show();
    }
    
    //除法函数
    void Fraction::div(Fraction &f0) {
        Fraction f1;
        f1.top = top * f0.bottom;
        f1.bottom = bottom * f0.top;
        f1.show();
    }
    
    //比较大小函数
    void Fraction::Compare(Fraction &f0) {
        Fraction f1;
        f1.top = top * f0.bottom - f0.top * bottom;
        if(f1.top > 0){
            cout << top << "/" << bottom << ">" << f0.top << "/" << f0.bottom <<endl;
        }
        else if(f1.top < 0) {
            cout << top << "/" << bottom << "<" << f0.top << "/" << f0.bottom <<endl;
        }
        else{
            cout << top << "/" << bottom << "=" << f0.top << "/" << f0.bottom <<endl;
        }
    }
    

    main.cpp

    #include <stdio.h>
    #include "Fraction.h"
    using namespace std;
    int main() {
        Fraction a;
        Fraction b(3,4);
        Fraction c(5);
        a.show();
        b.show();
        c.show();
        c.add(b);
        c.min(b);
        c.mul(b);
        c.div(b);
        c.Compare(b);
        a.set();
        a.show();
        return 0;
    }
    

    (3) Xcode 下运行结果截图

    实验总结与体会

    对新学的构造函数的初始化方法还不够熟练。
    对是否需要形参和返回值,以及返回值的类型不清楚。
    原本我对多文件的运用一脸懵逼,通过这次实验,有种豁然开朗的感觉,所谓实践出真知~

  • 相关阅读:
    索引失效
    laravel记录笔记Laravel 连接数据库、操作数据库的三种方式
    php 基于redis计数器类
    0x02 MySQL SQL基本语句
    0x01 MySQL What's DataBase
    浅析僵尸进程&孤儿进程
    python并发编程&IO模型
    关于python代码是编译执行还是解释执行
    python并发编程&协程
    基于Cpython的 GIL(Global Interpreter Lock)
  • 原文地址:https://www.cnblogs.com/jiahewang/p/8922596.html
Copyright © 2011-2022 走看看