结题报告

Posted eason66-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结题报告相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <stack>
#include <cstio>
#include <cstring>
using namespace std;
stack <float> data;
stack <char> symbol;
int b[5][6];
int change(char a){
    int symbol_index;
    switch(a){
        case +:symbol_index=1;break;
        case -:symbol_index=2;break;
        case *:symbol_index=3;break;
        case /:symbol_index=4;break;
        case @:symbol_index=5;break;
    }
    return symbol_index;
}
int main(){
    memset(b,0,sizeof(b));
    b[3][1]=b[3][2]=b[4][1]=b[4][2]=b[1][5]=b[2][5]=b[3][5]=b[4][5]=1;
    string a;
    cin >> a;
    symbol.push(@);
    float index=0;
    for(int i=0;i<a.length();i++){
        if(a[i]==#){
            data.push(index);
            break;
        }
        if(a[i]<=9&&a[i]>=0){
            index*=10;
            index+=a[i]-0;
        }
        else{
            data.push(index);
            index=0;
            int symbol_index;
            symbol_index=change(a[i]);
            while(b[symbol_index][change(symbol.top())]==0){
                float b=data.top();
                data.pop();
                float a=data.top();
                data.pop();
                switch(symbol.top()){
                    case +:data.push(a+b);break;
                    case -:data.push(a-b);break;
                    case /:data.push(a/b);break;
                    case *:data.push(a*b);break;
                }
                symbol.pop();
            }
            symbol.push(a[i]);
        }
    }
    while(symbol.top()!=@){
        float b=data.top();
        data.pop();
        float a=data.top();
        data.pop();
        switch(symbol.top()){
            case +:data.push(a+b);break;
            case -:data.push(a-b);break;
            case /:data.push(a/b);break;
            case *:data.push(a*b);break;
        }
        symbol.pop();
    }
    printf("%.4f",data.top());
    return 0;
}

 

技术图片

思路:{

       先读入,再循环{

             如果是数据,将index变量×10+数据。

             如果是运算符{

先将index压入栈data中,再将index归零。

然后将运算符转换成运算符代码,参见附表1。

然后分两种情况:{

1.     symbol栈栈顶运算符优先级没此运算符高:直接压栈。

2.  否则取出symbol栈栈顶和data栈栈顶(b)和新的栈顶(取出后栈顶后新的栈顶,即取出前从上往下排第二的元素)(a)进行运算,然后再分两种情况考虑。

}

}

如果是#:index压栈,退出循环。

       }

       然后把剩下的计算完。参见2。

}

犯的错误:{

1.     除法应用float类型,我写成int了。

2.     栈改成int后,其他变量没改。

3.     #时,index没入栈。(思路中已纠正)。

}

收获:{

1.     注意类型。

2.     结束时不要想当然地结束循环,而应思考一下还有什么操作。

}

以上是关于结题报告的主要内容,如果未能解决你的问题,请参考以下文章

创新项目结题报告范文3篇

P1132 数字生成游戏 结题报告

《基于Cortex-M4的ucOS-III的应用》课程设计 结题报告

结题报告

结题报告

1141Brackets Sequence结题报告