7 1 表示式轉換(25 分)

2021-08-15 17:40:37 字數 1335 閱讀 1050

算術表示式有字首表示法、中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。

輸入格式:

輸入在一行中給出不含空格的中綴表示式,可包含+、-、*、\以及左右括號(),表示式不超過20個字元。

輸出格式:

在一行中輸出轉換後的字尾表示式,要求不同物件(運算數、運算符號)之間以空格分隔,但結尾不得有多餘空格。

輸入樣例:

2+3*(7-4)+8/4
輸出樣例:

2 3 7 4 - * + 8 4 / +
**如下:

#include

#include

#include

#include

#include

#include

using

namespace

std;

bool isoper(char c)//判斷是否是操作符

int priority(char a,char b)//判斷優先順序

if(a=='-')

if(a=='*')

if(a=='/')

if(a=='(')

if(a==')')

if(a=='#')

return1;}

void sign(char *s,int *t)//判斷是否是加減號

}void print(vector

&a,int *arr)

else

if(*it=='+'||*it=='-'||*it=='*'||*it=='/')

while((*it>='0'&&*it<='9') || *it=='.')

if(*it=='$')//遇到數字間的分隔符

if(it!=a.end())

}}int main()

if(tmp[i+1]==1)

result.push_back('$');//作為數字間的分隔符

}else

if(priority(a.top(),str[i])==1)//當前符號比棧頂優先順序大

else

if(priority(a.top(),str[i])==0)//優先順序一樣,即左右括號相遇}}

while(a.top()!='#')

print(result,tmp);

}

表示式轉換 25 分

首先規定優先順序,括號為最高優先順序,乘號或除號為次優先順序,加或減號為最低優先順序,至於數字,碰到就直接輸出即可。既然是數字,就有小數,整數,正數,負數之分,還有關於二元運算子的輸出,在括號內的二元運算子優先輸出,優先順序高的優先輸出 當然括號不算啊 根據題意,在輸出時可分為以下幾種情況。incl...

5 20 表示式轉換 25分

算術表示式有字首表示法 中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。輸入格式 輸入在一行中給出不含空格的中綴表示式,可包含 以及左右括號 表示式不超過20個字元。輸出格式 在一行中輸出轉換後的字尾表示式,...

5 20 表示式轉換 25分

算術表示式有字首表示法 中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。輸入格式 輸入在一行中給出不含空格的中綴表示式,可包含 以及左右括號 表示式不超過20個字元。輸出格式 在一行中輸出轉換後的字尾表示式,...