資源簡介
最后一個測試點沒過 實在想不出來哪有問題 歡迎指正。
后綴式轉中綴式
【問題描述】
將由數字和四則運算符組成的后綴表達式變換為中綴表達式。輸入的后綴表達式包含的運算符不超過15個。要求轉換后的中綴表達式中不應出現不必要的括號。例如,整個表達式兩端的括號要省略,不影響原計算結果的括號要省略。
【輸入形式】
程序從標準輸入上讀入一行字符串,是一個合法的后綴表達式,數字和運算符之間由空格分隔。其中的數字可以是整數,也可以是帶有小數部分的浮點數。
【輸出形式】
向標準輸出打印結果。 輸出只有一行,是轉換后的中綴表達式,并且 1. 各分量(包括括號)緊密輸出,不使用空格進行分隔
代碼片段和文件信息
#include
#include
#include
#include
char?buf[10000];
int?count?=?0;
char?c;
union?unit{
char?*s;
int?T;
};
struct?term{
int?type_a?type_b;?//左右兩項的類型?0:數?1:項
char?symbol;
union?unit?a;
union?unit?b;
};
int?stack_type[50]?e?=?-1;
union?unit?stack_value[50];
struct?term?item[100];
int?num?=?0;
char?s[1000];
int?getNum()
{
int?i?=?0;
if?(c?==?‘-‘||c==‘+‘){
s[i++]?=?c;
c?=?buf[++count];
}
do{
s[i++]?=?c;
c?=?buf[++count];
}?while?(isdigit(c)?||?c?==?‘.‘);
s[i]?=?0;
stack_type[++e]?=?0;
stack_value[e].s?=?(char*)malloc(strlen(s)+1);
strcpy(stack_value[e].s?s);
return?0;
}
void?getSymbol()
{
item[num].symbol?=?c;
item[num].type_a?=?stack_type[e-1];
item[num].type_b?=?stac
- 上一篇:最全的GIS圖標
- 下一篇:簡單模擬超級瑪麗奧上下左右移動代碼
評論
共有 條評論