Github地址:https://github.com/wln772777917/wl.sizeyunsuan
成员:08111602_1120161935_王连宁
08111602_1120161917_李家葶
PSP表格
PSP2.1
Personal Software Process Stages
预估耗时(分钟)
实际耗时(分钟)
Planning
计划
5
10
· Estimate
· 估计这个任务需要多少时间
5
10
Development
开发
· Analysis
· 需求分析 (包括学习新技术)
120
800
· Design Spec
· 生成设计文档
30
60
· Design Review
· 设计复审 (和同事审核设计文档)
0
0
· Coding Standard
· 代码规范 (为目前的开发制定合适的规范)
10
30
· Design
· 具体设计
60
120
· Coding
· 具体编码
180
500
· Code Review
· 代码复审
0
0
· Test
· 测试(自我测试,修改代码,提交修改)
120
800
Reporting
报告
60
120
· Test Report
· 测试报告
30
30
· Size Measurement
· 计算工作量
10
10
· Postmortem & Process Improvement Plan
· 事后总结, 并提出过程改进计划
30
120
合计
660
2610
核心代码:
1.随机生成四则运算,后来加上^运算。
void aftersz(ZX number[100])
{
int i=rand()%10;
if(i<=2)
{
int j=rand()%5;
if(j==0)
number[t].a='+';
else if(j==1)
number[t].a='-';
else if(j==2)
number[t].a='*';
else if(j==3)
number[t].a='/';
else number[t].a='^';
number[t].b=0;
t++;
afterfh(number);
}
else if(i>=3&&i<=6)
{
if(n1==1)
{
aftersz(number);
}
else
return ;
}
else//右括号
{
if(n>0&&number[t-2].a!='('&&number[t-2].b!=0)
{
number[t].b=0;
number[t].a=')';
n--;
t++;
aftersz(number);
}
else
aftersz(number);
}
}
2.利用堆栈计算正确答案
int convert(ZX number[100])
{
stacks2;
for(int i=0;i
{
if(number[i].b==1)//操作数
s2.push(number[i]);
else
{
if(number[i].a==')')
{
while(s1.top().a!='(')
{
s2.push(s1.top());
s1.pop();
}
s1.pop();
}
else if(s1.empty()||s1.top().a=='('||number[i].a=='(')
s1.push(number[i]);
else
{
if(number[i].b==0&&(number[i].a=='*'||number[i].a=='/'||number[i].a=='^')&&(s1.top().a=='+'||s1.top().a=='-'))
s1.push(number[i]);
else
{
s2.push(s1.top());
s1.pop();
i--;
}
}
}
}
while(!s1.empty())
{
s2.push(s1.top());
s1.pop();
}
while(!s2.empty())
{
ZX s=s2.top();
s2.pop();
s1.push(s);
}
ZX c1;
int c2,c3,c4;
stacks3;
while(!s1.empty())
{
c1=s1.top();
s1.pop();
if(c1.b==1)
s3.push(c1.a);
else
{
c2=s3.top();
s3.pop();
c3=s3.top();
s3.pop();
switch(c1.a)
{
case '+':c4=c3+c2;break;
case '-':c4=c3-c2;break;
case '*':c4=c3*c2;break;
case '/':c4=c3/c2;break;
case '^':c4=pow(c3,c2);break;
}
s3.push(c4);
}
}
return s3.top();
}
3.倒计时功能
printf("Countdown start:\n");
for(int time=20;time>=0;time--)
{
Sleep(1000);
printf("\r%2d",time);
}