结对编程

一 题目要求

二 程序分析

这个程序由我和崔露露搭档完成,由于编程的能力有限,设计的程序比较简单,每次只能实现一个人做电梯,

运行程序,输入所在楼层,和要去的楼层,再输入方向,就可以启动电梯,电梯向上输入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;
}
三 运行结果截图
复制代码
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

posted @ 2016-04-09 16:15  syhqqq  阅读(271)  评论(0编辑  收藏  举报