從電梯問題,看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++之間的區別(有點懂了)錯覺錯覺