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 + -
显示快捷键?