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])
{
stack<ZX>s2;
for(int i=0;i<t;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;
stack<int>s3;
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);
}