#include<iostream> #include<string> #include<stack> //int count = 0; using namespace std; void operastack(char c) { stack<char>s; int count = 0; while (c) { if (c == '@') break; else if (c == '(') s.push(c); else if (c == ')') { if (!s.empty()) { s.pop(); count++; } else { cout << "no" << endl; } } } if (s.empty()) { cout << count << endl; } else cout << "no" << endl; } int main() { //string s; //cin >> s; char c; cin >> c; operastack(c); system("pause"); }修改以上代码
时间: 2024-01-19 20:03:46 浏览: 87
#include <iostream>
以下是修改后的代码:
```cpp
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int operastack(char c)
{
stack<char> s;
int count = 0;
while (c)
{
if (c == '@')
break;
else if (c == '(')
s.push(c);
else if (c == ')')
{
if (!s.empty())
{
s.pop();
count++;
}
else
{
return -1; // 返回错误标志,表示括号不匹配
}
}
}
if (s.empty())
{
return count; // 返回括号匹配的数量
}
else
return -1; // 返回错误标志,表示括号不匹配
}
int main()
{
char c;
cin >> c;
int result = operastack(c);
if (result == -1)
{
cout << "no" << endl;
}
else
cout << result << endl;
return 0;
}
```
主要修改如下:
1.将 `count` 的声明和初始化放到 `operastack` 函数内部,不需要全局变量。
2.修改 `operastack` 函数的返回值为 `int` 类型,返回值为括号匹配的数量,如果括号不匹配则返回错误标志 `-1`。
3.在 `main` 函数中根据 `operastack` 函数的返回值输出结果。
阅读全文