结对项目

成员:齐明

github地址:https://github.com/BIT1120161913/terminal

PSP

Personal Software Process Stages

ړ预估耗时(分钟) 实际耗时(分钟)
Planning 计划 120  100
· Estimate  ·估计任务需要多长时间 10080  
Development 开发    
· Analysis  需求分析(包括学习新技术) 1440  1400
· Design Spec  生成设计文档 720  
· Design Review  设计复审 720  
Coding Standard 代码规范 720  720
Design 具体设计 720  700
Coding 具体编码 720  1000
Code Review 代码复审 720  720
Test 测试 1440  1000
Reporting 报告 720  
Test Report 测试报告 720  
Size Measurement 计算工作量 720  
Postmortem & Process Improvement Plan 总结并题出改进计划 720  
  合计  10200  5640

 

FILE *fp;//将生成的一千道题写入该文件
int produce(int n);//生成一系列随机数,代表一个表达式里的数字和运算符、括号,存在int数组里

该函数核心代码:

sum = rand() % 7 + 4;//运算符数量   至少4个
        sum += sum + 1;
        for(j = 0; j < sum; j++){
            if(j%2 == 0)
                a[j] = rand()%50 + 1;
            else
                a[j] = -1 * (rand()%4 + 1);
        }

        if(n == 1){
            mid = (rand()%4)*2 + 1;
            a[mid] = -5;
        }

a[]存放数字,每个数字表示一个数或一个运算符、括号。


int trans(int sum,int n);//将int数组里的数转化为字符来表示表达式,存放在字符型数组里,以写入文件或输出到屏幕

int transfor(int n);//中缀转后缀表达式,嵌套调用int isp(int a)和int icp(int a);

该函数核心代码:

while(i < n){
        if(a[i] >= 0){//如果是数字放入b数组
            b[kb++] = a[i];
            i++;
        }
        else{
            g = stack[bottom-1];
            if(isp(g) < icp(a[i])){
                stack[bottom] = a[i];
                bottom++;
                i++;
            }
            else if(isp(g) > icp(a[i])){
                bottom--;
                b[kb++] = stack[bottom];
            }
            else{
                bottom--;
                if(stack[bottom] == -6)//-6为(
                    i++;
            }
        }
    }

b[]存放后缀表达式

double solve(int n);//解后缀表达式

该函数核心代码:

for(i = 0; i < n; i++){
        if(b[i] >= 0)
            stack[top++] = (double)b[i];
        else{
            y = stack[--top];
            x = stack[--top];
            switch(b[i]){
                case -1:x = x + y;break;
                case -2:x = x - y;break;
                case -3:x = x * y;break;
                case -4:x = x / y;break;
                case -5:x = pow(x,y);break;
            }
            stack[top++] = x;
        }
    }

 

心得:

  这个程序比较大,我以前很少写过类似的程序,对我是一个很好的锻炼,虽然性能比较差,可能还有bug,但我觉得我已经尽力而为了。在编程的过程中,为了解决问题,我在网上学了很多知识,也熟悉了一些以往学过但有些生疏的知识。这个程序质量不高,还得怪自己学艺不精,和他人差距太大,还得努力提高。

 

posted @ 2018-05-11 09:43  甘泉0811  阅读(96)  评论(0编辑  收藏  举报