结对编程
一 题目要求
二 程序分析
这个程序由我和崔露露搭档完成,由于编程的能力有限,设计的程序比较简单,每次只能实现一个人做电梯,
运行程序,输入所在楼层,和要去的楼层,再输入方向,就可以启动电梯,电梯向上输入1,电梯向下要输
入-1,这是第一次写结对编程,相信经过这次的磨练,以后会越做越好。
三 对方性格评价
崔露露给我的感觉非常负责,工作起来的样子很认真,态度很端正,我们本次的合作过程一直都很顺利,
以前对她没有太多的认识,也基本没有过沟通,但是经过这次合作,对她有了比较深刻的了解,希望下次还能
和她一起合作。下面是我和她的工作照片
四 过程总结
这次作业让我对编程有了更深刻的了解,也找到了很多自己的不足,想的过程和亲自动手写是完全两码事,
本以为程序很简单,但是真正自己动手写的时候才发现什么都写不出,有很多基础知识都已经忘记了,这次
作业让我提升了自己的实力,并在日后的自我学习以及上课时,认真对待,不论上的是不是专业课,都认真
去听,努力做到最好。
这次作业我最大的感受有二。
第一、队友很重要。这包含如何沟通等。
第二、本身的编程能力很重要。 其实,学习计算机,最重要的不是读老师上课内容的了解,考试考得怎
么样。我认为最重要的是,自学能力。并且最有效的方式,就是与队友完成项目,以及合作的重要性,相信
自己以后会做到越来越好。
五 程序设计
定义三个函数
int abs_(int a, int b, int c, int d);//判断响应满足请求最近的电梯号 int check(int goTo, int now);//检查电梯状态,并判断最近电梯是否满足条件(是否超重) int call(int now, int goTo, int dir, int a);//响应用户请求
主函数
void main() { while(1) { printf("输入所在楼层,前去的楼层,方向\n"); int dir; int goTo, now; int i; scanf("%d%d%d", &now, &goTo, &dir); i = check(goTo, now); call(now, goTo, dir, i); } }
判断满足相应的最近的电梯号函数
int abs_(int n, int b, int c,int d) { int a1, a2, a3,caller; a1 = n -ele[b].now; if (a1 < 0) a1 = -a1; a2 = n- ele[c].now; if (a2 < 0) a2 = -a2; a3 = n-ele[d].now; if (a3 < 0) a3 = -a3; if (a1 < a2) { caller = b; if (a1 < a3) caller = b; else caller = d; } else { caller = c; if (a2 < a3) caller = c; else caller = d; } return caller; }
查询函数
int check (int goTo, int now) { int a; if (now % 2 == 0&&goTo%2==0) { if (ele[0].num > 10)//一号电梯是满 { if (ele[2].now < ele[3].now) a = 2; else a = 3; } else if (ele[2].num>20)//三号电梯满 { if (ele[0].now < ele[3].now) a = 0; else a = 3; } else if (ele[3].num>20)//四号电梯满 { if (ele[2].now < ele[0].now) a = 2; else a = 0; } else //都不满 a = abs_(now, 0, 2, 3); } if (now % 2 == 0 && goTo % 2 == 1)//位于偶数层要去奇数层 { if (ele[0].now<ele[3].now) a = 0; else a = 3; } if (now % 2 == 1 && goTo % 2 == 0)//位于奇数层要去偶数层 { if (ele[0].now<ele[3].now) a = 0; else a = 3; } if (now % 2 == 1&&goTo%2==1) { if (ele[0].num > 10)//一号电梯是满 { if (ele[1].now < ele[3].now) a = 1; else a = 3; } else if (ele[1].num>10)//二号电梯满 { if (ele[0].now < ele[3].now) a = 0; else a = 3; } else if (ele[3].num>20)//四号电梯满 { if (ele[1].now < ele[0].now) a = 1; else a = 0; } else //都不满 a = abs_(now, 0, 1, 3); } return a; }
调用电梯函数
int call(int now,int goTo,int dir,int a) { if (dir == 1 && ele[a].dir == 1 && now > ele[a].now)//等于1为向上运行 { ele[a].num++; ele[a].now = now; printf("the elevator %d is coming to your spot -- %d\n",a,now); printf("now,the are/is %d people in elevator\n", ele[a].num); ele[a].now = goTo; ele[a].dir = 1; printf("now,we are goning to floor %d\n",goTo); printf("OK!Here we are!\n"); ele[a].num--; ele[a].dir = 0; printf("now,the are/is %d people in elevator\n", ele[a].num); } else if (dir == 1 && ele[a].dir == 0) { ele[a].num++; ele[a].now = now; printf("the elevator %d is coming to your spot -- %d\n",a, now); printf("the are/is %d people in elevator\n", ele[a].num); ele[a].now = goTo; ele[a].dir = 1; printf("now,we are goning to floor %d\n", goTo); printf("OK!Here we are!\n"); ele[a].num--; ele[a].dir = 0; printf("now,the are/is %d people in elevator\n", ele[a].num); } if (dir == -1 && ele[a].dir == -1 && now < ele[a].now)//-1向下运行 { ele[a].num++; ele[a].now = now; printf("the elevator %d is coming to your spot -- %d\n", a, now); printf("the are/is %d people in elevator\n", ele[a].num); ele[a].now = goTo; ele[a].dir = -1; printf("now,we are goning to floor %d\n", goTo); printf("OK!Here we are!\n"); ele[a].num--; ele[a].dir = 0; printf("now,the are/is %d people in elevator\n", ele[a].num); } else if (dir == -1 && ele[a].dir == 0) { ele[a].num++; ele[a].now = now; printf("the elevator %d is coming to your spot -- %d\n", a, now); printf("the are/is %d people in elevator\n", ele[a].num); ele[a].now = goTo; ele[a].dir = -1; printf("now,we are goning to floor %d\n", goTo); printf("OK!Here we are!\n"); ele[a].num--; ele[a].dir = 0; printf("now,the are/is %d people in elevator\n", ele[a].num); } return 0; }
三 运行结果截图