스택을 사용하여 적절한 중첩을 위해 대괄호로 구성된 사용자 입력의 유효성을 검사하는 프로그램을 작성하려고합니다. STL 컨테이너 또는 재귀를 사용하지 않고이 작업을 수행하려고합니다. 나는 도로 블록을 약간 공격했고, 나는 올바른 방향으로 조금 움직였다.C++ 스택이있는 브래킷 검사기
#include <iostream>
#include <string>
#include "ArrayStack.h"
using namespace std;
bool test(char *argg);
int main()
{
string input;
int size = 50;
cout << "enter here: ";
getline(cin, input);
for (int i = 0; i < size; i++)
test(input[i]);
}
bool test(char *argg)
{
ArrayStack S;
char D;
while (*argg) {
switch(*argg) {
case '[': case '{': case '(':
S.push(*argg);
break;
case ']':
if(S.isEmpty())
return false;
D = S.pop();
if(D!='[')
return false;
break;
case '}':
if(S.isEmpty())
return false;
D = S.pop();
if(D!='{')
return false;
break;
case ')':
if(S.isEmpty())
return false;
D = S.pop();
if(D!='(')
return false;
break;
default:
return false;
}// end switch
argg++;
}// end while
return S.isEmpty(); // return true if reach here with empty stack
}
감사 :
여기내가 지금까지 무엇을 가지고 내가 가지 가까이라고 생각하지만, 나는 그것을 지나치게 단순화 할 수있다처럼 나는 (나는 자기 교육을 통해 학습의 과정에있어) 느낌 사전에 어떤 도움을
왜 문제가 무엇인지 알지 못합니까? (코드가 컴파일되지 않는 것 같습니다) 어쨌든, 적어도 두 명의 다른 사람들이 오늘/어제 같은 숙제에 대해 물었습니다. 따라서 그 대답을보십시오. 일반적인 관찰 :'main' 전에 함수를 선언하고 그것을 정의하는 대신'main' 전에 정의하지 않는 이유는 무엇입니까? –
나는 지난 몇 시간 동안이 질문 중 두 가지가 튀어 나오는 것을 보았다고 맹세 할 수는 있지만, 나는 그들을 찾을 수없는 것 같아. – Xeo
그는 이전에 같은 질문을 한 적이있다. http://stackoverflow.com/questions/8373159/stack-of-chars-of-check-balanced-brackets – Drahakar