時間限制:1 sec
記憶體限制:64 mb
提交:602
解決:179
提交狀態
輸入由非負整數、+、-、*、/、(、)組成的計算表示式,計算該表示式的值。
每個輸入檔案中一組資料。
輸入只有一行,不超過200個字元,其中不存在空格。資料保證表示式一定合法,且所有的整數都不小於0、不大於1024。中間結果保證不超過15位有效數字精度。
輸出一行,即表示式的值,結果精度保留小數點後2位。
3+(12/(2*2+1))
5.40 提示
晴神書(演算法筆記)上第七章的基礎上加上對左括號和右括號的處理就行。如果 str[i]是左括號,那麼入操
作符棧;如果 str[i]是右括號,那麼不斷把操作符棧中的元素彈出到字尾表示式佇列中,直到
碰到左括號。注意左括號跟右括號都是不需要進入字尾表示式中的。具體看**。
#include #include #include #include #include #include using namespace std;
struct node ;
string str;
stacks; //操作符棧
queueq; //字尾表示式序列
mapop;
void change()
q.push(temp); //將這個運算元壓入字尾表示式的佇列
} else if(str[i] == '(') else if(str[i] == ')')
s.pop(); // 彈出左括號,不入隊
i++;
} else
temp.op = str[i];
s.push(temp);//把該操作符壓入操作符棧中
i++;}}
//如果操作符棧中還有操作符,就把它彈出到字尾表示式佇列中
while(!s.empty())
}double cal()
}return s.top().num;//棧頂元素就是字尾表示式的值
}int main()
某科學的間斷超電磁炮
時間限制 1000 ms 記憶體限制 65535 k 問題描述 炮姐bilibili為了練習自己的能力,於是左右開弓開始shoot 開始的時候電磁炮應該是間斷的,所以打到的靶子也是不連續的。比如左手能打到1號 2號 3號靶子,右手能達到1 2 3 4 5號靶子。雖然她想知道自己到底打到了哪些靶子很容...
C 簡單的計算器
實驗目的和要求 1.設計背景 設計擁有簡單的計算功能,方便計算簡單的計算題。方便使用者的使用。2.設計功能 具有一般計算功能,能進行基本的加減乘除運算,還具有求根號,倒數等功能。特點是能進行不同進製的運算和不同進製間的轉換。3.模組分解 該計算器分為3個模組,分別是 textbox 顯示區 顯示數字...
C語言的計算器
printf 半徑輸入錯誤!n break case 7 case 8 case 13 break case 9 case 10 printf 從1到輸入數之間的偶數和是 d n sum break case 12 break case 11 while i m printf 從1到輸入數之間所有3...