lyx1.cpp
来自「基于vc语言的简单跑马灯程序可完成10层电梯的模拟控制」· C++ 代码 · 共 159 行
CPP
159 行
#include <stdio.h>
#include <conio.h>
class liftor
{
public:
int now_flare;
int direction;
int stored_flare[10];
liftor();
void set_flare(int x,int y);
void set_direction(int z);
void moveto(int h);
};
liftor::liftor()
{
int i;
now_flare=0;
for(i=0;i<10;i++)
stored_flare[i]=0;
direction=0;
}
void liftor::set_flare(int x,int y)
{
stored_flare[x]=y;
}
void liftor::set_direction(int x)
{
direction=x;
}
void liftor::moveto(int y)
{
now_flare=y;
printf("电梯到达第 %d th楼\n",now_flare);
}
void input1(liftor &myliftor)
{
int input_flare,input_direction;
printf("输入楼层号及上下选择,以-1结束\n");
while(1)
{
printf("楼层是\t");
scanf("%d",&input_flare);
fflush(stdin);
if(input_flare==-1)
break;
else {
printf("上下选择:1-上楼,2-下楼\t");
scanf("%d",&input_direction);
fflush(stdin);
}
myliftor.set_flare(input_flare,input_direction);
}
}
void input2(liftor &myliftor)
{
int inside_flare;
printf("输入该层的乘客想到达的楼层,以-1结束\n");
while(1)
{
scanf("%d",&inside_flare);
fflush(stdin);
if(inside_flare==-1)
break;
else myliftor.set_flare(inside_flare,myliftor.direction);
}
}
void check(liftor &myliftor)
{
int i;
int flag1=0,flag2=0,flag3=0;
for(i=0;i<10;i++)
{
if(myliftor.stored_flare[i]!=0)
flag1=1;
if(myliftor.stored_flare[i]==1)
flag2=1;
if(myliftor.stored_flare[i]==2)
flag3=1;
}
if(!flag1) myliftor.set_direction(0);
else if(!flag2&&flag3) myliftor.set_direction(2);
else if(!flag3&&flag2) myliftor.set_direction(1);
}
int main(int argc, char *argv[])
{
liftor myliftor;
char flag;
int j;
myliftor.direction=1;
printf("**********************************************************\n");
printf("* 1.该程序用于模拟10(0-9)层的电梯控制 *\n");
printf("* 2.先输入按下电梯的层号及上下选择(类似电梯外的按钮) *\n");
printf("* 3.每到一层时,输入乘客要到的楼层号(类似电梯内的按钮) *\n");
printf("* 4.该程序会显示出电梯上下的路线 *\n");
printf("**********************************************************\n");
while(1)
{
input1(myliftor);
if(myliftor.direction==1)
{
for(j=0;j<10;j++)
{
if(myliftor.stored_flare[j]==1)
{
if(j>myliftor.now_flare)
{
myliftor.moveto(j);
myliftor.stored_flare[j]=0;
input2(myliftor);
}
}
}
}
check(myliftor);
if(myliftor.direction==0)
{
printf("还要继续么[Y/N]?\n");
scanf("%c",&flag);
fflush(stdin);
if(flag=='N'||flag=='n')
break;
}
if(myliftor.direction==2)
{
for(j=9;j>-1;j--)
{
if(myliftor.stored_flare[j]==2)
{
if(j<myliftor.now_flare)
{
myliftor.moveto(j);
myliftor.stored_flare[j]=0;
input2(myliftor);
}
}
}
}
check(myliftor);
if(myliftor.direction==0)
{
printf("还要继续么[Y/N]?\n");
scanf("%c",&flag);
fflush(stdin);
if(flag=='N'||flag=='n')
break;
}
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?