-1

単純な式チェッカーであるプログラムを書いています。プログラムが行うことは、ユーザーによる特定の入力が整形式かどうかをチェックすることだけです。使用しているファイルが 3 つあります。以下にそれぞれの部分を掲載します。私の質問は、正しくコーディングされている場合、ケース 1 の main.cpp にあります。私はスタックが初めてで、何をしたいのかを正しくコーディングしたかどうかわかりません。コードが式の後に : を取得する場合に備えて、入力が'('スタックにプッシュされた場合、答えが)'トップになり、それらがペアであるかどうかを比較します。次に、式が整形式かどうかを出力します。ありがとう。

コードは次のとおりです。

main.cpp

switch (choice){
case 1: 
    cout << "Current Setting: () " << endl;
    cout << "Enter your expression followed by a ; : " << endl;
    do {

    cin >> answer;


    if (answer = '(')
        stack.push( '(' );
    else 
        if (answer = ')' )
        (stack.top() == '(')




            while (answer != ';');

Stack.h

elemType top(void) const;
// precondition: this stack is not empty
// returns top element in this stack

// transformers
void push(const elemType& item);
// precondition: this stack is not full
// adds item to this stack

void pop(void);
// removes top element from this stack if exist
// remains empty otherwise
4

2 に答える 2

0

表現

if (answer = '(')

answer に代入'('し、それが非ゼロ (ゼロである) かどうかをチェックします。そのため、最初の分岐が常に実行されます。

必要なもの:

if (answer == '(')

代わりに(他の場合も同様)。

}また、前にクロージングが必要ですwhile

于 2012-04-16T02:05:55.963 に答える
0

番号。式全体を読んでいて、それを 1 つの文字と比較しようとしています。

if (answer = '(')

また、ループは何もしていません

 while (answer != ';');
于 2012-04-16T01:54:10.357 に答える