スタックを使用して適切なネストを行うために、ブラケットからなるユーザー入力を検証するプログラムを作成しようとしています。私はSTLコンテナや再帰を使用せずにこれを実行しようとしています。私はロードブロックに多少ヒットしましたが、正しい方向に向かってちょっとしたナッジを探しています。私は一種の近くだと思うが、私はここに(私は自己教育を通じて学習の過程にいるよ)C++スタック付きブラケットバリデータ
それをoversimplifyingすることができるような気が私がこれまで持っているものです。
#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
}
感謝事前にどのような援助のために
なぜあなたの問題が何であるかを言わないのですか(コードがコンパイルされていないようです)。とにかく、少なくとも2人は今日/先日同じ宿題について尋ねてきたので、それらの答えを見てください。一般的な観察: 'main'の前に関数を宣言し、それを定義するのではなく、' main'より前に定義するのはどうですか? –
私はこれらの質問のうち2つが最後の数時間でポップアップしているのを見て誓うことができましたが、私はそれらを見つけることができませんでした... – Xeo
ええ、彼は以前に同じ質問をしましたhttp://stackoverflow.com/questions/8373159/chars-to-check-balanced-bracketsのスタック – Drahakar