最近刷codeup時,逐步感到題目難度的提公升因此在後續階段,會逐步更新一些codeup中有一些難度的題目.
思路:看到題目後,就首先想到了資料結構時,所學習到的中綴以及字尾表示式。實現思路如下:
1、首先將中綴表示式轉換成字尾表示式,這裡我們需要借助佇列與棧。對中綴表示式進行處理,對於數字直接將其push到佇列中;對於符號,判斷當前符號與符號棧棧頂符號的優先順序關係,如果當前符號的優先順序小於棧頂符號,棧頂符號出棧進入佇列,並繼續比較。否則將當前符號入棧。
2、得到字尾表示式後,對字尾表示式進行計算,依次從佇列中pop。同時需要使用乙個棧存放結果。對於佇列中提取出的字元,分為兩種情況,數字直接入棧,操作符需要從棧頂依次pop出兩個數進行操作符對應計算後,將結果重新入棧。最後棧中僅剩的乙個數字就是我們的計算結果。
#include#include#include#include#includeusing namespace std;
struct node;
queueq;
stacks;
string str;
mapmp;
void change()
q.push(temp);
}else
temp.op = str[i];
s.push(temp);
i++;
} }while(!s.empty())
}double cal()
} return s.top().num;
}int main()
} while(!s.empty()) s.pop();
change();
node t;
/*while(!q.empty())else
q.pop();
}*/printf("%.2f\n", cal());
} return 0;
}
問題 A 簡單計算器
讀入乙個只包含 的非負整數計算表示式,計算該表示式的值。測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。30 90 26 9...
6 7 問題 A 簡單計算器
題目描述 讀入乙個只包含 的非負整數計算表示式,計算該表示式的值。輸入測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。輸出對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。樣...
簡單計算器
unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,stdctrls,buttons,math math是數 算單元 type tform1 class ...