1. 程式人生 > >從電梯問題,看c和c++之間的區別(有點懂了)錯覺錯覺

從電梯問題,看c和c++之間的區別(有點懂了)錯覺錯覺

命令 上下 能夠 current 表現 靈活 沒有 c++ 16px

磕磕碰碰的也相繼用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++之間的區別(有點懂了)錯覺錯覺