gpt4 book ai didi

c++ - 堆栈的平衡表达

转载 作者:行者123 更新时间:2023-11-28 06:53:06 25 4
gpt4 key购买 nike

请告诉我我做错了什么? 我需要确保表达是平衡的我什么都试过了,但我什至没有收到错误

int main() {
ifstream infile;
infile.open("input.txt");

string exp;
cout << "Enter an expression ";
while (getline(infile, exp)) {
cout << exp << ": ";
if (matcher(exp))
cout << "Matched ok" << endl;
else
cout << "Match error" << endl;
cout << "Enter an expression: ";
}

cout << "--- Done ---" << endl;

return 0;
}

int matcher(string expression) {
stack<char> s;
for (int i = 0; i < expression.length(); i++) {
if (isOpener(expression[i]))
s.push(expression[i]);
else if (isCloser(expression[i])) {
if (s.empty()) return 1;
char opener = s.top();
s.pop();
if (!matches(opener, expression[i])) return 1;
}
}

if (!s.empty()) return 1;
return 0;
}

最佳答案

一个明显的问题 -- 您的 matcher 函数似乎在失败时返回 1(不匹配),在成功时返回 0,但是您的如果 matcher 返回非零值,main 打印 ok...

关于c++ - 堆栈的平衡表达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23523971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com