1

だから私は、ユーザーに後置式を求めるクラスのためにしなければならないこの逆ポーランド記法プログラムを持っています。

たとえば、ユーザーが ab + cd - * と入力すると、プログラムは最後にそれを次のように変換します。

((a + b) * (c - d)) しかし、これは私の問題ではありません。

だから私の質問は、一度に 1 つの要素を 1 つの文字列全体である ab + cd - * をスタックにプッシュする方法です。教授はまた、入力が文字列に格納されると、各要素の間にスペースがあると述べました。

出力は ab + cd - * のようになり、1 つのスタックを占めます。

ab + cd - * である必要があり、7 スタックを占めます。

クラスには、プログラムを作成するためのスケルトンとして使用している基本的なコードがいくつかありました。可能であれば、必要なものに合わせて変更したいと考えています。

#include <iostream>
#include <string>

using namespace std;

typedef string stack_element;

class stack_node
{
    public:
    stack_element data;
    stack_node *next;
};

class stack
{
    public:
    stack();
    ~stack();
    stack_element & top();
    void pop();
    void push(const stack_element &);
    void print();

    private:
    stack_node *s_top;
};

stack::stack()
{
    s_top=0;
    cout<<"Inside Default Constructor\n";
}

void stack::push(const stack_element & item)
{
    cout<<"Inside push \n";
    stack_node *p = new stack_node;

    p->data = item;
    p->next = 0;

    if (s_top == 0)
    {
        s_top = p;
    }
    else
    {
        p->next = s_top;
        s_top = p;
    }
}

int main()
{
    string input;
    cout<<"enter an input:";
    cin>>input;
    S.push(input);
}
4

1 に答える 1

1

これはあなたが求めているものですか?

int main()
{
    string input;
    cout<<"enter an input:";
    while (cin>>input)
    {
        S.push(input);
    }
}

説明:

cin >> input空白で区切られた文字を に読み込みますinput。式の戻り値は ですcinwhileループ テストなどのブール コンテキストでcinは、最後の読み取りが失敗したかどうかを確認するためにテストされます。入力が消費されると最後の読み取りが失敗するため、ループは終了します。

授業で使っている教科書は?

于 2013-10-28T19:09:20.007 に答える