不知道為啥這個會報錯deque iterator not dereferencable
#include
#include
#include
#include
using namespace std;
char str[210];
int prio[5][5] = ;
stackop; //村運算子編號
stacknum;//表示式數字
double cal(int t)
return ret;
}void main()
num.push(n);
while (str[i] == ' ')
i++;
if (str[i] == '+')
t = 1;
else if (str[i] == '-')
t = 2;
else if (str[i] == '*')
t = 3;
else if (str[i] == '/')
t = 4;
//優先順序高於棧頂
if (prio[t][op.top()] == 1 || op.empty())
op.push(t);
else
op.push(t);
}i++;
}while (!op.empty())
cout.precision(2);
cout << fixed << num.top() << endl;
num.pop();}}
正確**:
#include
#include
#include
#include
using namespace std;
char str[210];
stackop; //運算fu
stacknum;//表示式數字
double cal(char t)
return ret;
}void main()
num.push(n);
while (str[i] == ' ')
i++;
switch (str[i])
op.push(str[i]);
break;
case '*': case '/'://如果操作符為優先順序第一的乘除
//while (!op.empty() && (op.top() == '*' || op.top() == '/'))
op.push(str[i]);
break;
default:
break;
}i++;
}while (!op.empty())
printf("%.2lf\n", num.top());
/*cout.precision(2);
cout << fixed << num.top() << endl;*/
num.pop();}}
簡單計算器 九度教程第27題
利用堆疊對表示式求值的方法 1.設立兩個堆疊,乙個用來儲存運算子,另乙個用來儲存數字。2.在表示式首尾新增標記運算子,該運算子運算優先順序最低。3.從左至右依次遍歷字串,若遍歷到運算子,則將其與運算子棧的棧頂元素進行比較,若運算子棧的棧頂運算子優先順序小於該運算子或者此時運算子棧為空,則將該運算子壓...
九度 題目1019 簡單計算器
時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 8387 解決 3065 題目描述 讀入乙個只包含 的非負整數計算表示式,計算該表示式的值。輸入 測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束...
簡單計算器(棧)
開始複習棧,這個題感覺見得很多,各種各樣的,但是核心思路就是把中綴表示式轉化為字尾表示式,我們老師說這個東西也叫作中序二叉樹轉後序二叉樹。大概實現的方式就是用棧來實現 最開始感覺沒啥思路,因為之前一直都不會這種題 論為什麼我這麼菜,之前沒有好好學過棧,知道了stl中有stack後還是方便很多 第一次...