【JM通讯源码】【apacheatlas源码】【shiroispermit源码】源码编辑器教学计划

时间:2024-12-22 20:57:19 来源:成品源码1688浪潮 编辑:pb 源码生成

1.C语言 任意表达式求值。源码(栈的编辑应用

源码编辑器教学计划

C语言 任意表达式求值。(栈的器教JM通讯源码应用

       /*** 只适合整数的表达式求值 ***/

       /***其中部分可作修改,表达式也可是学计输入的***/

       #include "iostream.h"

       const int n0=;

       int s1[n0+1]; //操作数栈

       char s2[n0+1]; //运算符栈

       int t1,t2;

       int num[4]; //提取表达式中的整数

       void calcu() //一次计算

       {

        int x1,x2,x;

        char p;

        //弹出一个运算符

        p=s2[t2--];

        //弹出两个操作数

        x2=s1[t1--];

        x1=s1[t1--];

        //进行一次运算

        switch(p) {

        case '+':x=x1+x2;break;

        case '-':x=x1-x2;break;

        case '*':x=x1*x2;break;

        case '/':x=x1/x2;

        }

        //结果压入操作数栈

        s1[++t1]=x;

       }

       int calculator(char *f)

       {

        int v,i=0;

        char *p=f;

        t1=t2=0; //设置空栈

        while (*p!='\0')

        switch(*p) {

        case '+': case '-':

        while (t2&&(s2[t2]!='('))

        //执行先遇到的加、减、源码apacheatlas源码乘、编辑shiroispermit源码除运算

        calcu();

        //当前运算符进栈

        s2[++t2]=*p;

        //读下一个字符

        p++;

        break;

        case '*': case '/':

        if (t2&&(s2[t2]=='*')||(s2[t2]=='/'))

        //执行先遇到的器教乘、除运算

        calcu();

        //当前运算符进栈

        s2[++t2]=*p;

        //读下一个字符

        p++;

        break;

        case '(':

        //左括号进栈

        s2[++t2]=*p;

        //读下一个字符

        p++;

        break;

        case ')':

        while (s2[t2]!='(')

        //执行括号内的学计加、减、源码乘、编辑除运算

        calcu();

        //弹出左括号

        t2--;

        //读下一个字符

        p++;

        break;

        default:

        //把字符串转换成整数值

        v=0;

        do {

        v=*v+*p-'0';

        p++;

        } while((*p>='0')&&(*p<='9'));

        //操作数进栈

        s1[++t1]=v;

        num[i++]=v;

        };

        //执行先遇到的器教加、减、学计乘、源码目标源码除运算

        while (t2) calcu();

        //返回结果

        return s1[t1];

       }

       void main()

       {

        char a[]="5*(+6)-";

        cout<<calculator(a)<<endl;

        cout<<"其中的编辑数字为:\n";

        for (int i=0;i<4;i++)

        {

        cout<<num[i]<<' ';

        }

        cout<<endl;

       }

       原来做过的东西,是器教源码电影C++的,VC++6.0环境下调试运行成功。

copyright © 2016 powered by 皮皮网   sitemap