zoukankan      html  css  js  c++  java
  • c++简单程序设计-4

    一 编程实验部分
    1.graph类
     ① 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) {
    }
    
    void Graph::draw() {
        int i, j;
        for (i = 1; i <= size; i++){
            for (j = 1; j <= size-i; j++)    //每行字符前的空
                cout << " ";
            for (j = 1; j <= 2*i-1; j++)       //每行的字符
                cout << symbol;
            for (j = 1; j <= size-i; j++)      //每行后的字符
                cout << " " ;
            cout << endl;
        } 
        return;
    }

    ③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; 
    } 

    扩展1:在main.cpp中加入以下代码

        char a;
        int i;
        while (cin >> a >> i) {
            Graph graph(a, i);
            graph.draw();
        }

     扩展1(改)

    #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()在屏幕上绘制图形
    
        char a;
        int i;
        while (1) {
            cout << "是否需要重设图像,是(y),否(n):";
            char c;
            cin >> c;
            if (c == 'n')break;
            cout << "请输入图像的字符与尺寸:";
            cin >> a>> i;
            Graph graph(a, i);
            graph.draw();    
        }
        return 0; 
    } 

    2.fraction类

     ① fraction.h
    #pragma once
    
    class fraction {
    
    public:
    
        fraction();                                    //构造函数
        fraction(int t, int b);                        //函数重载
        fraction(int t);                               //函数重载
        void show();                                   //输出
        void jia(fraction &f1);                        //相加
        void jian(fraction &f1);                       //相减
        void cheng(fraction &f1);                      //相乘
        void chu(fraction &f1);                        //相除
        void compare(fraction f1, fraction f2);        //比较
    
    private:
        int top;                //分子
        int bottom;             //分母
    };

     ② fraction.cpp

    #include <iostream>
    #include "fraction.h"
    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::jia(fraction &f1) {                                //加法
        fraction f2;
        f2.top = top * f1.bottom + f1.top*bottom;
        f2.bottom = bottom * f1.bottom;
        f2.show();
    }
    
    void fraction::jian(fraction &f1) {                               //减法
        fraction f2;
        f2.top = top * f1.bottom - f1.top*bottom;
        f2.bottom = bottom * f1.bottom;
        f2.show();
    }
    
    void fraction::cheng(fraction &f1) {                              //乘法
        fraction f2;
        f2.top = top * f1.top;
        f2.bottom = bottom * f1.bottom;
        f2.show();
    }
    
    void fraction::chu(fraction &f1) {                                //除法
        fraction f2;
        f2.top = top * f1.bottom;
        f2.bottom = bottom * f1.top;
        f2.show();
    }
    
    void fraction::show() {                                           //输出
        cout << top << "/" << bottom << endl;
    }
    
    void fraction::compare(fraction f1, fraction f2) {               //比较
        float a = float(f1.top) / float(f1.bottom); float b = float(f2.top) / float(f2.bottom);
        if (a < b) { 
            cout << f1.top << "/" << f1.bottom << "<"; f2.show(); cout << endl; 
        }
        if (a==b) {
            cout << f1.top << "/" << f1.bottom << "="; f2.show(); cout << endl;
        }
        if (a > b) { 
            cout << f1.top << "/" << f1.bottom << ">"; f2.show(); cout << endl; 
        }
    }

     ③ main.cpp

    #include <iostream>
    #include "fraction.h"
    using namespace std;
    
    int main() {
        fraction f1;              //不提供初始值
        fraction f2(2,3);         //提供两个初始值
        fraction f3(3);           //提供一个初始值
        fraction f4(3,4);
        cout << "分数a:"; f1.show();
        cout << "分数b:"; f2.show();
        cout << "分数c:"; f3.show();
        cout << "分数d:"; f4.show();
        cout << "分数b+d:"; f2.jia(f4);
        cout << "分数b-d:"; f2.jian(f4);
        cout << "分数b*d:"; f2.cheng(f4);
        cout << "分数b/d:"; f2.chu(f4);
        cout << "分数b与d的比较:"; f1.compare(f2, f4);
        return 0;
    }

    实验总结与体会

    这次实验感觉如果不做扩展的话还是挺容易的...
    做了扩展后,我充分意识到了自己的不足...
    然后...我就决定放弃扩展(笑cry)
    虽然最后是真的没把扩展全部做完,但还是去思考了很多的
    像上面写了的扩展1,方法1是我想到的最快捷的方法
    但这是无限次重设,显然不符函数实际要求
    后来我重新修改了while语句,感觉效果挺好的
    扩展2可以用system"colour __" 实现
    然而我不怎么会改下划线里的值
    还可以在控制台窗口属性里调,调完重开就行了
    然后...就没有然后了
    也许过几天有心情了再来做完吧...溜了溜了




  • 相关阅读:
    AcWing 1027. 方格取数 dp
    AcWing 1014. 登山 dp
    acwing 482. 合唱队形 dp
    LeetCode 1463. 摘樱桃II dp
    LeetCode 100. 相同的树 树的遍历
    LeetCode 336. 回文对 哈希
    LeetCode 815. 公交路线 最短路 哈希
    算法问题实战策略 DARPA大挑战 二分
    算法问题实战策略 LUNCHBOX 贪心
    AcWing 1100. 抓住那头牛 BFS
  • 原文地址:https://www.cnblogs.com/tensheep/p/8922426.html
Copyright © 2011-2022 走看看