填個許久的坑,計算表示式的值

2021-06-19 01:08:00 字數 1067 閱讀 5511

記得暑假的時候就要寫這個,當時那道題沒有括號,用乙個簡單的方法而沒轉字尾式過的。

今天補了一下這個東東,支援+-*/()。

**如下:

# include# include# include# include# includeusing namespace std;

stackq;

stackw;

bool precede(char a, char b)//比較操作符優先順序

switch(b)

if(na>=nb)

return true;

else

return false;

}bool opmember(char ch)//判斷是否是操作符

void transform(char suffix, char exp)//中綴式exp轉字尾式suffix

q.push('#');

char *p=exp;

char ch=*p, c;

int k=0;

while(!q.empty())

break;

}default:

else

}if(ch!='#') q.push(ch);

break;}}

}if(ch!='#')ch=*++p;

}suffix[k]='\0';

}double operate(double a, char ch, double b)//一次計算

double evaluation(char suffix)//計算字尾式

while(ch!='#')

}else

}ch=*p++;

}result =w.top();

return result;

}int main(void)

exp[t++]='#';

exp[t]='\0';

transform(suffix, exp);

printf("%lf\n", evaluation(suffix));

return 0;

}

計算表示式值

試題描述 字尾表示式是指運算子放在兩個運算物件之後,所有計算按運算子出現的順序,嚴格地從左到右進行。注意每個運算元之後都緊跟著乙個 如 3 5 2 7對應的字尾表示式為3.5.2.7.輸入乙個字尾表示式,求表示式的值。注意本題中只出現 三種運算子。輸入一行,乙個字尾表示式。輸出一行,乙個整數,表示字...

stack計算表示式的值

9.52 使用stack物件處理帶圓括號的表示式。遇到左圓括號時,將其標記下來。當你在乙個左括號之後 遇到右圓括號時,彈出stack物件中這兩邊括號之間的元素,直到遇到左括號,將左括號也一起彈出棧。接著在stack物件中壓入乙個值,用以表明這個用一對圓括號括起來的表示式已經被替換。程式如下 incl...

計算表示式值(字尾表示式) 棧

處理表示式主要是對優先順序以及括號的判斷 1.運算子棧頂的優先順序小於加入的時,需要將所有的不評級的取出並計算,2.當遇到 時,需要括號內的運算全部處理 2.其他情況全部加入運算子棧和資料棧 include include include using namespace std typedef lo...