• 从电梯问题,看c和c++之间的区别(有点懂了)错觉错觉


    磕磕碰碰的也相继用c和c++构造了不少的电梯了。虽然对自我的表现不满意,但是总体来说还是有一定的收获的,对于c和c++之间的区别感觉也摸到了一点点门道了。。。

    用c语言构造电梯的步骤:


    第一步:

    分析这个电梯所需要完成的功能————把乘客送到目的地,同时记录下完成这个操作的时间,然后比较时间最短

    第二步:

    需要引入的变量 1.存储电梯现在所在的楼层:now

    2.乘客所发出请求的时间:requesttime

    3.乘客发出请求的楼层:requestfloor

    4.乘客所要去的楼层:tofloor

    第三步:

    写函数

    第一个函数    即运算电梯运行的时间

    第二个函数  即电梯运行去目标楼层的函数

    用c++构造电梯:

    我们面向的是电梯这个对象,而不是电梯运乘客这件事。所以我们是构造类,主要的目的并不是要完成这个问题。

    第一步:

    构造elevator这个类

    (个人感觉为了能够更好的完成应该再加上乘客这个类,就是友元啦,现学现卖一波)怕是错觉

    第二步:

    私有成员变量:电梯的当前位置及电梯的运行方向。

    第三步:

    成员函数:

    前往目标楼层的函数即Tofloor()

    计算经过的时间的函数Time()

    电梯停靠在目的楼层上下客的函数stop()

    更新这个电梯      nowfloor()

    对于c和c++的区别:

    在我看来c语言只是针对这个问题而产生的,他是针对问题本身即计算最短时间,即我要求的是电梯完成的动作,电梯是怎么样的,程序员是不用管的,就是说我们所写的代码和问题的联系十分的紧密,即如果没有这个问题就不用提什么代码了

    而对于c++而言,我们更关注的是电梯这个对象,通过电梯计算最短时间只是电梯问题中的一种,即如果失去了这个题目电梯这个类依旧有意义,就是有了这个类之后我们想要解决什么问题可以直接引用这个类,和别的问题组合起来,也可以完美的契合。这也就是满足了c++的精神————可理解性、可测试性和可修改性。让代码变得更加灵活。

     电梯类:

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    #include<vector>
    #include<cmath>
    using namespace std;

    class elevator
    {
    public:
    int flag;//通过这个判断电梯是向上还是向下
    int currentFloor=0;//电梯现在所在的楼层
    int ntime=0;//电梯运行的时间
    elevator();
    ~elevator();
    int nowFloor(int toFloor);//现在所在的楼层
    int command(int currentFloor, int toFloor, int time);//命令
    };

    #include "elevator.h"

    elevator::elevator()
    {
    }


    elevator::~elevator()
    {
    }

    int elevator::nowFloor(int toFloor)
    {
    currentFloor = toFloor;
    return currentFloor;
    }

    int elevator::command(int currentFloor, int toFloor, int time)
    {
    ntime = time;//运送上一位客人最后的时间
    ntime += abs(toFloor - currentFloor);
    ntime++;
    nowFloor(toFloor);//更新电梯现在所在的位置
    return ntime;
    }

    不管怎么样,感觉用起来还挺熟练的,我可能是喜欢上打代码的这种感觉了,我可能变态了吧~~

           

  • 相关阅读:
    NFC学习一个记录
    谈话《百度搜索引擎的网页质量白皮书》
    EBS OAF 发展 URL商标、加密和编码
    绘制一个简单的实现接口盘
    [AngularFire2] Pagination
    [TypeScript] The Basics of Generics in TypeScript
    [TypeScript] Using Assertion to Convert Types in TypeScript
    [TypeScript] Sharing Class Behavior with Inheritance in TypeScript
    [TypeScript] Creating a Class in TypeScript
    [Angular2 Router] Preload lzay loading modules
  • 原文地址:https://www.cnblogs.com/sy57/p/8987510.html
Copyright © 2020-2023  润新知