0

私が書いたこのプログラムは、3 つのグループ化記号 "(",")";"[","]"; が正しく使用されているかどうかをテストするはずでした。と "{"、"}"。スタックの配列実装を使用しており、それが良い文字列か悪い文字列かを評価することになっています。例: (a+b), [(ab)+c] は適切で、)a+b( などは不適切な文字列です。プログラムを実行すると、エラーが 1 つしか表示されません。 -colon か何かですが、コードを何度か調べた後、見つけられませんでした。トンネル ビジョンを取得したのかもしれません。ここで何が問題なのか見てもらえますか? これはエラーです: project1.cpp:41: エラー: 「while」の前に初期化子が必要です。

#include <string>
#include <iostream>
#include <stdio.h>

using namespace std;

const int DefaultListSize = 100;
typedef char Elem;

class Astack {
private:
    int size;
    int top;
    Elem *listArray;
public:
    Astack (int sz = DefaultListSize)
    {size = sz; top= 0; listArray = new Elem[sz];}
    ~Astack() {delete [] listArray;}
    void clear() {top=0;}
    bool push(const Elem& item) {
            if (top == size) return false;
    else {listArray[top++] = item; return true;}}
    bool pop(Elem& it) {
    if (top==0) return false;
    else {it = listArray[--top]; return true;}}
    bool topValue(Elem& it) const {
    if (top==0) return false;
    else {it = listArray[top-1]; return true;}}
    bool isEmpty() const {if (top==0) return true;
     else return false;}
     int length() const{return top;}
}; //end of class Astack

Astack s;

const string LEFTGROUP="([{";
const string RIGHTGROUP=")]}";

int main()

while (!EOF) {
  while (!EOL) {
   ch = getc();
   if (ch == LEFTGROUP[0]) {
      s.push(ch);
      }
   if (ch == LEFTGROUP[1] {
      s.push(ch);
      }
   if (ch == LEFTGROUP[2] {
      s.push(ch);
      }
    } //checking for openers

   while (!EOL) {
    ch = getc();
    if (s.top() == LEFTGROUP[0]) {
       if (ch == RIGHTGROUP[0]) {
          s.pop();
          }
         }
    if (s.top() == LEFTGROUP[1]) {
       if (ch == RIGHTGROUP[1]) {
          s.pop();
          }
         }
    if (s.top() == LEFTGROUP[2]) {
       if (ch == RIGHTGROUP[2]) {
          s.pop();
          }
         }
    if (!s.empty()) {
      cout<<"Bad String."<<endl;
    else {
      cout<<"Good String."endl;
     }
    }
   }

 return 0;
4

1 に答える 1

3

の先頭にある { を忘れましたint main()。また、}で終わる必要があります

int main(){
    //your while code
    return 0;
}
于 2013-05-03T15:26:17.457 に答える