C++ 括号是否平衡!在C++;
我对检查括号字符串是否平衡的算法有一些问题。我必须从一个文本文件中获取输入并在另一个文本文件中显示输出。我对该算法有问题。请帮助我找出问题C++ 括号是否平衡!在C++;,c++,josephus,C++,Josephus,我对检查括号字符串是否平衡的算法有一些问题。我必须从一个文本文件中获取输入并在另一个文本文件中显示输出。我对该算法有问题。请帮助我找出问题 #include <iostream> #include <string.h> #include <fstream> #include "stack.h" #include "stack.cpp" using namespace std; int main() { StackType<char> c;
#include <iostream>
#include <string.h>
#include <fstream>
#include "stack.h"
#include "stack.cpp"
using namespace std;
int main() {
StackType<char> c;
ifstream inFile("parentheses.txt");
ofstream outFile("report.txt");
int i, N;
char str[500];
inFile >> N;
inFile >> str;
while (str[i]) {
for (int i = 0; str[i] != '\0'; i++) {
if ((str[i] == '(') || (str[i] == '{') || (str[i] == '[')) {
c.Push(str[i]);
} else if ((str[i] == ')') || str[i] == '}' || str[i] == ']') {
if (c.isEmpty() == 1)
outFile << "Parentheses are not Balanced" << endl;
else if ((str[i] == ')' && str[i] == '(') ||
(str[i] == '}' && str[i] == '{') ||
(str[i] == ']' && str[i] == '[')) {
c.Pop();
} else
outFile << "Parentheses are not Balanced" << endl;
}
}
i++;
}
if (c.isEmpty() == 1)
outFile << "Parentheses are Balanced" << endl;
else
outFile << "Parentheses are not Balanced" << endl;
}
#包括
#包括
#包括
#包括“stack.h”
#包括“stack.cpp”
使用名称空间std;
int main(){
c型;
ifstream-infle(“括号.txt”);
出流文件(“report.txt”);
inti,N;
char-str[500];
填充>>N;
infle>>str;
while(str[i]){
对于(int i=0;str[i]!='\0';i++){
如果((str[i]='(')| |(str[i]='{')| |(str[i]='[')){
c、 推(str[i]);
}else如果((str[i]='))| | str[i]='}'| | str[i]='])){
如果(c.isEmpty()==1)
outFile我可以肯定地说:
if((str[i] == ')' && str[i] == '(') || (str[i] == '}' && str[i] == '{') || (str[i] == ']' && str[i] == '['))
是不正确的,因为它总是错误的。我假设你的意思是:
if ((c.Top() == '(' && str[i] == ')' || ...)
您的代码目前永远不会调用'Pop',因为您将str[i]与自身进行比较,希望它是两个不同的值
相反,您应该比较stri[i]针对堆栈顶部的任何内容。请修复代码布局。并发布一个示例,说明错误所在。您在哪一部分卡住了?意外结果?您是否尝试过使用步进器进行调试?您的约束是什么?括号何时平衡?使用调试器时,哪一行导致问题?str[i]==')&&str[i]='('
oh-wow。