练习2:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/be96603d340337b8c35c6d1bef46860a.png)
洛谷 P1739 表达式括号匹配:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/72d693e9bb2d20b1c9bad59d85cbc618.png)
#include<bits/stdc++.h>
using namespace std;
stack<char>s;
int main()
{
char ch;
int flags = 1;
while (cin >> ch && ch != '@') {
if (ch == '{' || ch == '[' || ch == '(')
s.push(ch);
else {
if (ch == '}' && s.top() != '{')flags = 0;
else if (ch == ']' && s.top() != '[')flags = 0;
else if (ch == ')' && s.top() != '(')flags = 0;
}
}
if (!s.empty())flags = 0;
if (flags == 1) cout << "YES";
else cout << "NO";
return 0;
}
练习3
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/82d0741641f98f703562be2070287f0d.png)
#include<bits/stdc++.h>
using namespace std;
stack<double>OPND;
stack<char>OPTR;
int OPTR_VALUE[1000];
void setup() {
OPTR_VALUE['#'] = 1;
OPTR_VALUE['+'] = 2;
OPTR_VALUE['-'] = 2;
OPTR_VALUE['*'] = 3;
OPTR_VALUE['/'] = 3;
OPTR_VALUE['^'] = 4;
}
double Operate(double a, char c, double b) {
switch (c)
{
case'+':return a + b;
case'-':return a - b;
case'*':return a * b;
case'/':return a / b;
case'^':return pow(a, b);
default:break;
}