磕磕碰碰的也相继用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;
}

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

       

从电梯问题,看c和c++之间的区别(有点懂了)错觉错觉的更多相关文章

  1. 一文看懂npm、yarn、pnpm之间的区别

    文作者对比了当前主流的包管理工具npm.yarn.pnpm之间的区别,并提出了合适的使用建议,以下为译文: NPM npm是Node.js能够如此成功的主要原因之一.npm团队做了很多的工作,以确保n ...

  2. [转] 一文看懂npm、yarn、pnpm之间的区别

    [From] http://geek.csdn.net/news/detail/197339 原文:Understanding differences between npm, yarn and pn ...

  3. select、poll、epoll之间的区别总结

    select.poll.epoll之间的区别总结 05/05. 2014 select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪 ...

  4. 你真的会玩SQL吗?EXISTS和IN之间的区别

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  5. [转]ExtJs基础--Html DOM、Ext Element及Component三者之间的区别

    要学习及应用好Ext框架,必须需要理解Html DOM.Ext Element及Component三者之间的区别. 每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM ...

  6. iOS中assign,copy,retain之间的区别以及weak和strong的区别

    @property (nonatomic, assign) NSString *title; 什么是assign,copy,retain之间的区别? assign: 简单赋值,不更改索引计数(Refe ...

  7. 深入理解 '0' "0" '\0' 0 之间的区别

    看来基础还是很重要的,基础不扎实就难以学好c语言,就别说写出高质量的c语言代码了.今天,我就被这个问题折磨的不行了,哈哈,不过现在终于明白了‘\0’ ,‘0’, “0” 之间的区别了.困惑和快乐与你分 ...

  8. Activex、OLE、COM、OCX、DLL之间的区别(转)

    熟悉面向对象编程和网络编程的人一定对ActiveX.OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的.在具体介绍它们的关系之间,我们还是先明确组件(Co ...

  9. 三层架构与MVC之间的区别

    文章转发自:http://www.admin10000.com/document/535.html 我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真 ...

随机推荐

  1. Python-爬虫小计

    # -*-coding:utf8-*-import requestsfrom bs4 import BeautifulSoupimport timeimport osimport urllibimpo ...

  2. wdcp v3 pureftpd 无法登录问题解决

    wdcp v3 新建站点和ftp账号 单位无法登录ftp 在端口中也确实可以看到有进行在登录状态 错误原因: 防火墙端口没有开启该端口范围  20000-30000 这时候发现 改端口为20078  ...

  3. WIN10下WNMP开发环境部署

    刚刚开始学习PHP时,一直使用phpstudy,后面发现很多东西自己单独配置安装会理解更深刻,所以自己总结了一下windows下开发环境的部署教程. 以前经常在CSDN和博客园看别人的教程,今天才注册 ...

  4. sublime text 3安装 package control 插件的方法

    自动安装的方法 - 快捷键ctrl+` 或者View->Show Console,输入如下代码 import  urllib.request,os;pf='Package Control.sub ...

  5. C语言跳水比赛预测结果

    5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三:B选手说:我第二,E第四:C选手说:我第一,D第二:D选手说:C最后,我第三:E选手说:我第四,A第一:比赛结束后,每 ...

  6. Docker入门系列01

    前两篇写了 Docker 如何安装和相关的概念,当然概念的东西省略了很多,主要是自己水平有限,所以后期会可能增添.但以上内容都是用别人的建好的 镜像(Image) ,这怎么行,我们应该自己动手造轮子, ...

  7. LVS那些事

    1998年,章文嵩博士成立了Linux Virtual Server的自由软件项目,进行Linux服务器集群的开发工作. 他的目标是:使用集群技术和Linux操作系统实现一个高性能.高可用的服务器,它 ...

  8. 网络流Edmonds-Karp算法入门

    今天自习课没事干,看书自学了一下网络流中的EK算法.(求最大流) 设s为源点,t为汇点,C为容量矩阵,F为流量矩阵,f为最大流量. 1.初始化F,f 2.用BFS在残量网络中找到一条从s到t的最短增广 ...

  9. 洛谷P4136 谁能赢呢?

    题目描述 小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问 ...

  10. 安卓app连接CC2541-手机休眠后唤醒,通信不再成功

    1. 现在遇到的问题,手机进入休眠状态后唤醒,APP软件和CC2541的通信不正常了,但是CC2541依然检测到时连接状态.如何解决这个问题?手机唤醒之后会重新创建活动? 2.Wakelock 锁机制 ...