从电梯问题,看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混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真 ...
随机推荐
- 消息队列MSMQ的使用
1.MSMQ安装 控制面板-程序和功能-打开或关闭Windows功能-Microsoft Message Queue(MSMQ)服务器,选中所有,点击确定. 2.消息队列的应用场景(转载自http:/ ...
- h5禁用手机input点击放大
最近项目做的是h5的手机移动端,在用苹果浏览器测试时,弹出框输入信息会自动拉伸屏幕,并且不会像安卓一样回来. 网上查找说设置浏览器自适应头,但是并没有效果, <meta name="v ...
- Spark RDD API详解之:Map和Reduce
RDD是什么? RDD是Spark中的抽象数据结构类型,任何数据在Spark中都被表示为RDD.从编程的角度来看, RDD可以简单看成是一个数组.和普通数组的区别是,RDD中的数据是分区存储的,这样不 ...
- golang 多维哈希(map,hashmap)实践随笔
有些场景使用多维哈希来存储数据,时间复杂度恒定,简单粗暴好用.这里记录一下. 如下是三维哈希的简单示意图,建议层数不要太多,否则时间久了,自己写的代码都不认识. 下图是三维哈希在内存的存储形式,has ...
- (数据科学学习手札43)Plotly基础内容介绍
一.简介 Plotly是一个非常著名且强大的开源数据可视化框架,它通过构建基于浏览器显示的web形式的可交互图表来展示信息,可创建多达数十种精美的图表和地图,本文就将以jupyter notebook ...
- 常见java异常英语词汇(一)
denied /dɪ'naɪəd/ adj 拒签 v 拒绝
- 北京Uber优步司机奖励政策(3月16日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 西安Uber优步司机奖励政策(12月28日到1月3日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- js中call()方法和apply方法的使用
1. 方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
- css 网站常用
简单的loading效果 .progressBar { border: solid 1px #303031; font: bold 20px/22px Arial, sans-serif; backg ...