请c高手解决下偶的问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 10:51:59
题目:算术表达式求值演示
问题描述:表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。
基本要求:以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用教科书表3.1给出的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书的例3-1演示在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。
测试数据:3*(7-2);8;1+2+3+4;(((6+6)*6+3)*2+6)*2;(20+2)*(6/2);
用栈来解决啊
我已经做到这个地方了 请高手解决下剩下的吧
operandtype exp_reduced()
{
strcpy(op,"'+-*/#");
INISTACK(OPTR); PUSH(OPTR,'#');

w=getchar();
while (!((w=='#') && (TOP(OPTR)=='#')))
if (!strchr(op,w)){
PUSH(OPND,w); w=getchar();
}else
if (precedence(w)>precedence(TOP(OPTR))){
PUSH(OPTR,w); w=getchar();
}else {
theta=POP(OPTR);
y=POP(OPND); x:=POP(OPND);
z=operate(x,theta,y); PUSH(OPND,z)

不会是一个学校的吧??我们也是这个作业...

#include <iostream>
#include <stack>

using namespace std;

int Operate(int x,char op,int y) //四则运算符的运算定义
{
switch(op){
case'+': return x+y;
case'-': return x-y;
case'*': return x*y;
case'/': return x/y;
}
}

char Precede(char op1,char op2) //判断符号的优先级
{

if(((op1=='+'||op1=='-')&&(op2=='+'||op2=='-'||op2==')'||op2=='#'))||((op1=='*'||op1=='/')&&(op2=='+'||op2=='-'||op2=='*'||op2=='/'||op2==')'||op2=='#')))
return '>';
if((op1=='('&&op2==')')||(op1=='#'&&op2=='#'))
return '=';
else
return '<';
}

void Tonumber(char &c,stack<int> &OPND) //转化为数字
{ int number=0;

if(((