-
1 # 勇往直前的香瓜40
-
2 # 小綿羊布魯斯
簡單的說,編程就是為了藉助於計算機來達到某一目的或解決某個問題,而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。
計算機雖然功能十分強大。可以供你上網、打遊戲、管理公司人事關系等等,但是沒有程序,它就等於是一堆廢鐵,不會理會我們對它下達的“命令”。于是,我們要馴服它,只有通過一種方式——程序,這也是我們和計算機溝通的唯一方式。
那程序到底是什麼呢?
程序也就是指令的集合,它告訴計算機如何執行特殊的任務
-
3 # 黑哥superfans
一般電梯是採用可編程控制器(PLC)來控制電梯主要包括兩大系統,即機械系統、電氣系統。其中,機械系統主要包括的機械部件有轎廂、門、開關、門機構、門鎖、導軌、導靴、對重等。
曳引機是電梯的動力心臟,是電梯的主要動力裝置,在電梯的運行中扮演著非常重要的角色。根據電梯使用的不同要求,電梯的驅動可以採用曳引驅動、液壓驅動、捲筒驅動及齒輪齒條、螺桿驅動。
曳引驅動是採用曳引輪作為驅動部件。
鋼絲繩懸掛在曳引輪上,一端懸吊轎廂,另一端懸吊對重裝置,由鋼絲繩和曳引輪槽之間的靡擦產生曳引力驅動轎廂上下運行。
-
4 # Mars145316075
#include#include
usingnamespacestd;/*乘客的結構體*/
structpassenger
{charname;intstart;intend;intdir;
};/*鏈表結構*/typedefstructLNode
{undefined
passenger P;structLNode *next;
}LNode,*LinkList;/*將節點LN插入到鏈表C中,插入到頭結點後面*/
voidInsert(LNode *C, LNode *LN)
{undefined
LN->next= C->next;
C->next =LN;
}/*刪除LN後的第一個節點*/
void del(LNode *LN)
{undefined
LNode*next2 = LN->next;
LN->next = next2->next;free(next2);
}/*在鏈表C中查找到與LN節點相同的節點,並刪除*/
void finddel(LNode *LN, LinkList C)
{for (LNode *p = C; p->next != NULL; p = p->next)
{if (p->next->P.name == LN->P.name)
{undefined
del(p);break;
}
}
}/*判斷鏈表是否為空*/
boolisempty(LinkList L)
{if (L->next ==NULL)return 1;else
return 0;
}/*當電梯運行方向為dir時,
將C中要進入電梯的節點全部存放至A中,按照進入電梯的順序存放
並將其相應的存放在B中,按照離開電梯的順序存放*/
void Insert2(LinkList A, LinkList B, LinkList C,intdir, intfloor)
{for (LNode *p = C->next; p != NULL; p = p->next)
{if (dir == 1 && p->P.start >= floor && p->P.dir == 1)
{//查找出C中方向相同且起始樓層在電梯上方的所有節點
LNode *r = (LNode*)malloc(sizeof(LNode));
LNode*s = (LNode*)malloc(sizeof(LNode));
r->P = p->P;
s->P = p->P;for (LNode *q = A; ; q = q->next)
{//將該節點插入A中,確保其起始樓層為升序的方式
if (q->next == NULL || q->next->P.start >= r->P.start)
{undefined
Insert(q, r);break;
}
}for (LNode *q = B; ; q = q->next)
{//將該節點插入B中,確保其目標樓層為升序的方式
if (q->next == NULL || q->next->P.end >= s->P.end)
{undefined
Insert(q, s);break;
}
}
}else if (dir == 0 && p->P.start <= floor && p->P.dir == 0)
{undefined
LNode*r = (LNode*)malloc(sizeof(LNode));
LNode*s = (LNode*)malloc(sizeof(LNode));
r->P = p->P;
s->P = p->P;for (LNode *q = A; ; q = q->next)
{if (q->next == NULL || q->next->P.start <= r->P.start)
{undefined
Insert(q, r);break;
}
}for (LNode *q = B; ; q = q->next)
{if (q->next == NULL || q->next->P.end <= s->P.end)
{undefined
Insert(q, s);break;
}
}
}
}
}int finds(int m, LinkList C, intdir)
{//確定出電梯行駛方向最後停留的樓層
if (dir == 1)
{for (LNode *p = C->next; p != NULL; p = p->next)
{if (mP.start)
m= p->P.start;
}
}else{for (LNode *p = C->next; p != NULL; p = p->next)
{if (m>p->P.start)
m= p->P.start;
}
}returnm;
}intmain()
{undefined
LinkList C= (LNode*)malloc(sizeof(LNode));
C->next = NULL;//C為存儲所有的乘客信息的鏈表
LinkList A = (LNode*)malloc(sizeof(LNode));
A->next = NULL;//A為存儲某個行駛方向上,上電梯的所有乘客信息
LinkList B = (LNode*)malloc(sizeof(LNode));
B->next = NULL;//B為A中乘客的按下電梯順序排列
int floor;//記錄電梯選擇運行方向時所在的樓層
int dir;//記錄電梯運行的方向
cout << "請輸入電梯所在樓層:";while (cin >>floor)
{/*輸入乘客信息並創建鏈表,電梯運行的初始方向根據只要上方有乘客則向上*/cout<< "請依次輸入乘客代號、起始樓層、目標樓層、行駛方向:" <
dir= 0;while (cin >>a)
{undefined
LinkList x= (LNode*)malloc(sizeof(LNode));
x->P.name =a;
cin>> x->P.start >> x->P.end >> x->P.dir;
Insert(C, x);if (x->P.start >=floor)
dir= 1;
}/*while(cin>>str)語句在結束輸入時使用了Ctrl+Z,告訴cin用戶已經結束了輸入,
為了讓程序正常運行,調用cin.clear()讓cin的所有條件狀態位復位*/cin.clear();/*模擬電梯行駛過程*/
while (!isempty(C))
{//有乘客未乘坐電梯
Insert2(A, B, C, dir, floor);//將C中滿足條件的乘客放入A、B中
/*乘客上下*/
if(isempty(B))
floor=finds(floor, C, dir);while (!isempty(B))
{//模擬電梯往某個特定方向行駛的過程
if (dir == 1)
{//當電梯是向上行駛時
if ((A->next == NULL) || (A->next->P.start > B->next->P.end))
{//出電梯的情況
cout << "當前樓層為" << B->next->P.end << ","
<< B->next->P.name << "出電梯" <
finddel(B->next, C);//刪除C中對應的乘客信息
del(B);//刪除鏈表中該乘客的信息
}else{//進電梯的情況
cout << "當前樓層為" << A->next->P.start << ","
<< A->next->P.name << "進電梯" <
del(A);//刪除鏈表中該乘客的信息
}
}else{//當電梯是向下行駛時
if ((A->next == NULL) || (A->next->P.start < B->next->P.end))
{undefined
cout<< "當前樓層為" << B->next->P.end << ","
<< B->next->P.name << "出電梯" <
finddel(B->next, C);
del(B);
}else{undefined
cout<< "當前樓層為" << A->next->P.start << ","
<< A->next->P.name << "進電梯" <
del(A);
}
}if (B->next != NULL && B->next->next ==NULL)
{undefined
floor= finds(B->next->P.end, C, dir);
}
}
dir= !dir;//改變行駛方向
}/**/cout<< endl <
cout<< "請輸入電梯所在樓層:";
}
system("pause");
}
回覆列表
電梯編程的原理是:
電梯程序裡的廳外召喚指令的記憶和消除功能可以用鎖存器KEEP指令。將廳外召喚的啟動保持信號端接S端,消除信號接R端。
在實現廳外召喚的記憶和消除功能時必須注意其記憶和消除條件。當按下一個指令按鈕或召喚按鈕,且電梯不在本樓層時,對應的PLC內部繼電器應保持該信號,而且通過PLC的輸出點亮相應的按鈕指示燈。當電梯正常到達樓層時,如果滿足該指令或召喚信號的停車條件時,電梯在該層停車,並且消除對應的指令或召喚信號。