首页 > 其他分享 >结对实验二

结对实验二

时间:2022-11-12 19:55:45浏览次数:45  
标签:gocc 结对 cc printf 电梯 实验 DY ZT

(1)本人角色

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

我的结对伙伴是梁添翔,学号:223201062132

(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/zjy99/p/16884519.html

相关文章

  • 实验三:朴素贝叶斯算法实验
    【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。【实验内容】针对下表中的数据,编写python程序实现朴素贝叶斯算法(不使用sklearn包),对输入数据进行预测;熟悉s......
  • 实验二结对编程
    1实验内容及要求 1.1 教学内容及要求完成结对项目,实现代码复审。1.2 实验要求首先在同学中找一个同伴,范围不限,可以在1~3班中随意组合,不要找同组的成员,女同学尽量......
  • 实验三:朴素贝叶斯算法实验
    【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。【实验内容】针对下表中的数据,编写python程序实现朴素贝叶斯算法(不使用sklearn包),对输入数据进行预测;熟悉s......
  • 实验三:朴素贝叶斯算法实验
    |20大数据三班| 20大数据三班 ||----|----|----||作业要求|作业要求||学号|20161337|实验三:朴素贝叶斯算法实验【实验目的】理解朴素贝叶斯算法原理,掌握......
  • 实验7:基于REST API的SDN北向应用实践
    一、实验目的1、能够编写程序调用OpenDaylightRESTAPI实现特定网络功能;2、能够编写程序调用RyuRESTAPI实现特定网络功能。二、实验环境1、下载虚拟机软件OracleVi......
  • 实验7:基于REST API的SDN北向应用实践s
    实验7:基于RESTAPI的SDN北向应用实践一、实验目的1.能够编写程序调用OpenDaylightRESTAPI实现特定网络功能;2.能够编写程序调用RyuRESTAPI实现特定网络功能。二、实......
  • 实验7:基于REST API的SDN北向应用实践
    实验7:基于RESTAPI的SDN北向应用实践一、实验目的能够编写程序调用OpenDaylightRESTAPI实现特定网络功能;能够编写程序调用RyuRESTAPI实现特定网络功能。二、实验环......
  • 软件工程实验二 结对编程
    一、题目要求我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:(1)能够自动生成四则运算练习题(2)可以定制题目数量(3)用户可以选择运算符(4)用户设置......
  • 实验2
    结对编程实验要求-huhaonan-博客园(cnblogs.com)2.1实验过程2.1.1实验代码给出博客园截图和网址,并附上github的代码地址。Create实验2-四则运算·xiyou111/-@e......
  • 实验三:朴素贝叶斯算法实验
    |班级链接|https://edu.cnblogs.com/campus/czu/classof2020BigDataClass3-MachineLearning|作业链接|https://edu.cnblogs.com/campus/czu/classof2020BigDataClass3-Mac......