c++表达式求值

来源:百度知道 编辑:UC知道 时间:2024/06/18 12:23:53
请帮忙看一下这个程序哪里错了,为什么编译可以通过但是却出不来任何结果呢
#include <iostream>
using namespace std;
char a[255],b[255],s2[100],s[255];
void push(char s[],char x,int t)
{s[t]=x;t++;
}
int pop(char s[],int t)
{return s[t];t--;
}
int top(char s[],int t)
{return s[t];
}
int main()
{cin>>a;
int t=0,i=0,j=0,w;
while(a[i]!='@')
{
if(a[i]<='9' && a[i]>='0')
{
while(a[i]<='9' && a[i]>='0')
{b[j]=a[i];i++;j++;}
b[j]='.';j++;}
if(a[i]=='(')
push(s2,a[i],t);
if(a[i]==')')
{
w=pop(s2,t);
while(w!='(')
{b[j]=w;j++;w=pop(s2,t);
}
}
if(a[i]=='+' && a[i]=='-')
{if(t!=0)
{w=top(s2,t);
while(w!='(')
{ b[j]=w;j++;w=pop(s2,t);
if(t==0)break;
else w=top(s2,t);
}
}
push(s2

/*** 只适合整数的表达式求值 ***/
/***其中部分可作修改,表达式也可是输入的***/
#include "iostream.h"
const int n0=30;
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]!='('))
//执行先遇到的加、减、乘、除运算
calcu();
//当前运算符进栈
s2[++t2]=*p;
//读下一个字符
p++;
break;
case '*': case '/'