从电梯问题,看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;
}
不管怎么样,感觉用起来还挺熟练的,我可能是喜欢上打代码的这种感觉了,我可能变态了吧~~
从电梯问题,看c和c++之间的区别(有点懂了)错觉错觉的更多相关文章
- 一文看懂npm、yarn、pnpm之间的区别
文作者对比了当前主流的包管理工具npm.yarn.pnpm之间的区别,并提出了合适的使用建议,以下为译文: NPM npm是Node.js能够如此成功的主要原因之一.npm团队做了很多的工作,以确保n ...
- [转] 一文看懂npm、yarn、pnpm之间的区别
[From] http://geek.csdn.net/news/detail/197339 原文:Understanding differences between npm, yarn and pn ...
- select、poll、epoll之间的区别总结
select.poll.epoll之间的区别总结 05/05. 2014 select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪 ...
- 你真的会玩SQL吗?EXISTS和IN之间的区别
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- [转]ExtJs基础--Html DOM、Ext Element及Component三者之间的区别
要学习及应用好Ext框架,必须需要理解Html DOM.Ext Element及Component三者之间的区别. 每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM ...
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
@property (nonatomic, assign) NSString *title; 什么是assign,copy,retain之间的区别? assign: 简单赋值,不更改索引计数(Refe ...
- 深入理解 '0' "0" '\0' 0 之间的区别
看来基础还是很重要的,基础不扎实就难以学好c语言,就别说写出高质量的c语言代码了.今天,我就被这个问题折磨的不行了,哈哈,不过现在终于明白了‘\0’ ,‘0’, “0” 之间的区别了.困惑和快乐与你分 ...
- Activex、OLE、COM、OCX、DLL之间的区别(转)
熟悉面向对象编程和网络编程的人一定对ActiveX.OLE和COM/DCOM这些概念不会陌生,但是它们之间究竟是什么样的关系,对许多们还是比较模糊的.在具体介绍它们的关系之间,我们还是先明确组件(Co ...
- 三层架构与MVC之间的区别
文章转发自:http://www.admin10000.com/document/535.html 我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真 ...
随机推荐
- 解决echarts 鼠标悬浮提示 文本提示问题。
参考文章:https://www.jianshu.com/p/aa585c304660 官方文章样式详解:http://echarts.baidu.com/option.html#tooltip.fo ...
- 抓包之Charles For Mac 4.0+破解版
前言:突然间发现好久没有写博客了,最近被公司的项目弄得脑壳疼
- 前端js转换时间戳为时间类型显示
//时间戳转换 function add0(m){return m<10?'0'+m:m } function formatDate(timestamp) { //timestamp是整数,否则 ...
- MySQL5.7主从同步--点位方式及GTID方式
MySQL5.6加入了GTID的新特性,其全称是Global Transaction Identifier,可简化MySQL的主从切换以及Failover.GTID用于在binlog中唯一标识一个事务 ...
- 壹度DIY_微信小程序组件_小程序插件开发
开源免费插件,diy特有的页面机制,搭配30+自定义组件,让你的站点每一个页面都可以完全自定义,可无缝对接任意小程序,如有疑问加入qq壹度小程序交流群:302866773:或wx:liu2417301 ...
- php连接数据库(一)
1.php链接数据库: 1.链接数据库 2.判断是否连接成功 3.设置字符集 4.选择数据库 5.准备SQL语句 6.发送SQL语句 7.处理结果集 8.释放资源(关闭数据库) $result = m ...
- SpaceVim 语言模块 elixir
原文连接: https://spacevim.org/cn/layers/lang/elixir/ 模块简介 功能特性 启用模块 快捷键 语言专属快捷键 交互式编程 运行当前脚本 模块简介 这一模块为 ...
- 北京Uber优步司机奖励政策(1月17日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 成都Uber优步司机奖励政策(2月18日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 【NIS】深入了解NIS
1 简介 NIS( NetworkInformation Service)提供了一个网络黄页的功能,当用户登录系统时,Linux系统会到NIS主机上去寻找用户使用的帐号密码信息加以比对,以提供用户登 ...