記得暑假的時候就要寫這個,當時那道題沒有括號,用乙個簡單的方法而沒轉字尾式過的。
今天補了一下這個東東,支援+-*/()。
**如下:
# 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...