首页 > 其他分享 >实验二朱旭

实验二朱旭

时间:2022-11-13 22:37:40浏览次数:35  
标签:gocc cc printf 电梯 实验 DY ZT 朱旭

(1)本人角色

本人在在这次实验结对项目中所担任领航员

我的结对伙伴是赵凯,学号:223201062520

(2)本次的程序任务和要求如上图所示,需要有4部电梯同时运行,每部电梯都有自己的限制且被同一控制器所控制,希望有图形显示效果,本次的任务我们组已经完成,关于编程的历程与总结现在就一一道来。

我们先尝试解决最核心的问题,即电梯的调度算法问题,初步构思是这样的,电梯根据当前控制器内所要到的楼层信息判断是向下运行或向上运行,并向上或向下运行至控制器内楼层的最大或最小值,期间出现的所有楼层信息都加入到控制器内,若有比最值更大或更小的信息不予理会,只是加入控制器中,每到一楼层就判断控制器内是否有该楼层,有则在该层停留,并移除控制器内该层信息,无则继续运行,运行至最值处,重新从控制器内找出最值,并判断向上或向下运行,如此循环。当控制器内没有信息后,电梯等待一段时间后会回到初值处。

代码如下:

#include<stdio.h>

typedef struct dianti
{
int ZT;//三种状态:静止,上行,下行
int LX;//三种类型:双,单,全
int cc;//此时停在的楼层数
int DY;//此楼层是否被调用
int SF;//是否有人用电梯
}SH;
SH a[4];
int SF, Ar, cc, gocc;
int k[3], m[3];
int Lookfor(int x, int y, int z)//计算楼层差值函数
{
int t;
if (a[x].ZT == 0)//此时a[x]电梯处于静止状态
{
if (y < z)
{
t= z - y;
}
else
{
t = y - z;
}
}
return t;
}
void main()
{
//接人操作
printf(" 全部楼层 单层 双层 全部楼层 \n");
printf(" (一) (二) (三) (四) \n");
printf(" ____ ____ ____ ____ \n");
printf(" $ $ $ $ $ $ $ $ \n");
printf(" 6 8 17 20 \n");
printf(" $ $ $ $ $ $ $ $ \n");
printf(" ^^^^ ^^^^ ^^^^ ^^^^ \n");
a[0].ZT = 0;
a[1].ZT = 0;
a[2].ZT = 0;
a[3].ZT = 0;
a[0].cc = 6;
a[1].cc= 8;//表示此时电梯停在的楼层数为7楼
a[2].cc = 17;
a[3].cc = 20;
while (1)
{
a[0].LX = 2;//一号电梯所有楼层都停靠
a[1].LX = 1;//二号电梯单号楼层都停靠
a[2].LX = 0;//三号电梯双号楼层都停靠
a[3].LX = 2;//四号电梯所有楼层都停靠
int i;
int SF1 = 0, j = 0;
printf("----------------------------------------------\n");
printf("若要用电梯请按按钮 1 !\n");
scanf("%d", &SF);//此时是否有人按电梯
if (SF == 1)
{
printf("*****此时有用户按电梯!*****\n");
}
printf("用户所在楼层为: ");
scanf("%d", &cc);//此时按电梯的人所在的楼层数
printf("上楼请按 1 ,下楼请按 0: \n");
scanf("%d", &Ar);//用户请求是上楼还是下楼标记
printf("请选择要去的楼层: ");
scanf("%d", &gocc);//用户要去的楼层
if (SF == 1)//用户按电梯
{
if (Ar == 1)//用户要上楼
{
if (cc % 2 == 0)//用户所在为偶数楼层
{
if (gocc % 2 == 1)//用户要去奇数楼层
{
for (i = 0; i < 4; i++)
{
if (a[i].LX == 2)
{
a[i].DY = 1;
}
else
{
a[i].DY = 0;
}
while (a[i].DY == 1)
{
k[SF1] = Lookfor(i, cc, a[i].cc);
m[SF1] = i;
SF1++;
a[i].DY = 0;
}
}
if (k[0] < k[1])
{
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].cc = gocc;
a[0].ZT = 0;
}
else
{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].cc = gocc;
a[3].ZT = 0;
}
}
if (gocc % 2 == 0)//用户要去偶数楼层
{
for (i = 0; i < 4; i++)
{
if (a[i].LX == 2 || a[i].LX == 0)
{
a[i].DY = 1;
}
else
{
a[i].DY = 0;
}
while (a[i].DY == 1)
{
k[SF1] = Lookfor(i, cc, a[i].cc);
m[SF1] = i;
SF1++;
a[i].DY = 0;
}
}
if (k[0] < k[1])
{
if (k[0] < k[2])
{
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].cc = gocc;
a[0].ZT = 0;
}
else
{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].cc = gocc;
a[3].ZT = 0;
}
}
else
{
if (k[1] < k[2])
{
printf("离用户最近并且符合条件的电梯为:2\n");
a[2].cc= gocc;
a[2].ZT = 0;
}
else
{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].cc = gocc;
a[3].ZT = 0;
}
}
}
}
if (cc% 2 == 1)//用户所在为奇数楼层
{
if (gocc% 2 == 0)//用户要去偶数楼层
{
for (i = 0; i < 4; i++)
{
if (a[i].LX == 2)
{
a[i].DY = 1;
}
else
{
a[i].DY = 0;
}
while (a[i].DY == 1)
{
k[SF1] = Lookfor(i, cc, a[i].cc);
m[SF1] = i;
SF1++;
a[i].DY = 0;
}
}
if (k[0] < k[1])
{
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].cc= gocc;
a[0].ZT = 0;
}
else
{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].cc= gocc;
a[3].ZT = 0;
}
}
if (gocc % 2 == 1)//用户要去奇数楼层
{
for (i = 0; i < 4; i++)
{
if (a[i].LX == 2 || a[i].LX == 1)
{
a[i].DY = 1;
}
else
{
a[i].DY = 0;
}
while (a[i].DY == 1)
{
k[SF1] = Lookfor(i, cc, a[i].cc);
m[SF1] = i;
SF1++;
a[i].DY = 0;
}
}
if (k[0] < k[1])
{
if (k[0] < k[2])
{
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].cc = gocc;
a[0].ZT = 0;
}
else
{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].cc= gocc;
a[3].ZT = 0;
}
}
else
{
if (k[1] < k[2])
{
printf("离用户最近并且符合条件的电梯为:2\n");
a[1].cc = gocc;
a[1].ZT = 0;
}
else
{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].cc= gocc;
a[3].ZT = 0;
}
}
}
}
}
if (Ar == 0)//用户要下楼
{
if (cc% 2 == 0)//用户所在为偶数楼层
{
if (gocc% 2 == 1)//用户要去奇数楼层
{
for (i = 0; i < 4; i++)
{
if (a[i].LX == 2)
{
a[i].DY = 1;
}
else
{
a[i].DY = 0;
}
while (a[i].DY == 1)
{
k[SF1] = Lookfor(i, cc, a[i].cc);
m[SF1] = i;
SF1++;
a[i].DY = 0;
}
}
if (k[0] < k[1])
{
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].cc= gocc;
a[0].ZT = 0;
}
else
{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].cc = gocc;
a[3].ZT = 0;
}
}
if (gocc% 2 == 0)//用户要去偶数楼层
{
for (i = 0; i < 4; i++)
{
if (a[i].LX == 2 || a[i].LX == 0)
{
a[i].DY = 1;
}
else
{
a[i].DY = 0;
}
while (a[i].DY == 1)
{
k[SF1] = Lookfor(i, cc, a[i].cc);
m[SF1] = i;
SF1++;
a[i].DY = 0;
}
}
if (k[0] < k[1])
{
if (k[0] < k[2])
{
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].cc = gocc;
a[0].ZT = 0;
}
else
{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].cc= gocc;
a[3].ZT = 0;
}
}
else
{
if (k[1] < k[2])
{
printf("离用户最近并且符合条件的电梯为:2\n");
a[2].cc =gocc;
a[2].ZT = 0;
}
else
{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].cc = gocc;
a[3].ZT = 0;
}
}
}
}
if (cc % 2 == 1)//用户所在为奇数楼层
{
if (gocc % 2 == 0)//用户要去偶数楼层
{
for (i = 0; i < 4; i++)
{
if (a[i].LX == 2)
{
a[i].DY = 1;
}
else
{
a[i].DY = 0;
}
while (a[i].DY == 1)
{
k[SF1] = Lookfor(i, cc, a[i].cc);
m[SF1] = i;
SF1++;
a[i].DY = 0;
}
}
if (k[0] < k[1])
{
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].cc = gocc;
a[0].ZT = 0;
}
else
{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].cc = gocc;
a[3].ZT = 0;
}
}
if (gocc% 2 == 1)//用户要去奇数楼层
{
for (i = 0; i < 4; i++)
{
if (a[i].LX == 2 || a[i].LX == 1)
{
a[i].DY = 1;
}
else
{
a[i].DY = 0;
}
while (a[i].DY == 1)
{
k[SF1] = Lookfor(i, cc, a[i].cc);
m[SF1] = i;
SF1++;
a[i].DY = 0;
}
}
if (k[0] < k[1])
{
if (k[0] < k[2])
{
printf("离用户最近并且符合条件的电梯为:0\n");
a[0].cc= gocc;
a[0].ZT = 0;
}
else
{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].cc = gocc;
a[3].ZT = 0;
}
}
else
{
if (k[1] < k[2])
{
printf("离用户最近并且符合条件的电梯为:2\n");
a[1].cc= gocc;
a[1].ZT = 0;
}
else
{
printf("离用户最近并且符合条件的电梯为:3\n");
a[3].cc= gocc;
a[3].ZT = 0;
}
}
}
}
}
}
else if (SF == 0)
{
printf("此时无人用电梯");
}
printf(" 全部楼层 单层 双层 全部楼层 \n");
printf(" (一) (二) (三) (四) \n");
printf(" ____ ____ ____ ____ \n");
printf(" $ $ $ $ $ $ $ $ \n");
printf(" %d %d %d %d \n", a[0].cc, a[1].cc, a[2].cc, a[3].cc);
printf(" $ $ $ $ $ $ $ $ \n");
printf(" ^^^^ ^^^^ ^^^^ ^^^^ \n");
printf("\n");
printf("----------------------------------------------\n");
}
}

标签:gocc,cc,printf,电梯,实验,DY,ZT,朱旭
From: https://www.cnblogs.com/zx2580/p/16887190.html

相关文章

  • 实验三:朴素贝叶斯算法实验
    实验三:朴素贝叶斯算法实验【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。【实验内容】针对下表中的数据,编写python程序实现朴素贝叶斯算法(不使用sklea......
  • 结对实验
    (1) 本人角色我在本次结对项目中担任驾驶员角色。结对伙伴杨宁为领航员。(1) 系统实现过程生成式子的功能:    先写好生成操作数和包含1~3个操作符的式子的四......
  • 实验三:朴素贝叶斯算法实验
    实验三:朴素贝叶斯算法实验 姓名许珂学号201613344 【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。【实验内容】针对下表中的数据,编写......
  • 评价及实验二总结
    本次编程过程中,领航员为李金泽,他为我的工作做出了很大的帮助,因为我的编程工作几乎都是在家里完成的,所以与领航员的但部分交流也是在网上进行的。这次编程过程中,我编写了不......
  • 实验三:朴素贝叶斯算法实验
    【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。【实验内容】针对下表中的数据,编写python程序实现朴素贝叶斯算法(不使用sklearn包),对输入数据进行预测;熟......
  • CSS 样式属性书写顺序对渲染性能到底有没有影响(实验论证-2022.11)
    在前端领域有一定工作年限,并且接触过前端蛮荒时代(前后端不分离,jQuery,纯HTML+CSS+JS)开发的小伙伴,应该对CSS样式非常熟悉。早在那个年代,前端在编写CSS代码时,已经听说业界对......
  • 软件工程基础实验二源代码
    #include<stdio.h>#include<stdlib.h>#include<windows.h>#include<time.h>voidMenu();intgetChoice();voiddoExercise(intch);voidinteger(intchoice);voidd......
  • 实验三:朴素贝叶斯算法
    【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。【实验内容】针对下表中的数据,编写python程序实现朴素贝叶斯算法(不使用sklearn包),对输入数据进行预测;熟悉s......
  • 实验三:朴素贝叶斯算法实验
    实验三:朴素贝叶斯算法实验班级:20大数据(3)班学号:201613341【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。【实验内容】针对下表中的数据,编写python程......
  • 实验三:朴素贝叶斯算法实验
    【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。【实验内容】针对下表中的数据,编写python程序实现朴素贝叶斯算法(不使用sklearn包),对输入数据进行预测;熟悉s......