-1

これが私が思いついたものです。プログラムで最初の2つの値をスタックにポップし、それらを計算してスタックにプッシュするだけです...必要な関数は既に作成しましたが、問題があるようです2 つの数値を加算する関数。

#include <iostream>   

using namespace std;
int Maxlenght=5;
class stackhouse{
private:
    int *CreateArray;
    int top;
public:
    stackhouse();
    bool IsEmpty();
    bool IsFull();
    void constructor();
    void Push(int);
    void Pop(int);
    void Sum();
    void Sub();
};
stackhouse::stackhouse(){
    CreateArray= new int[Maxlenght];
    top=-1;
}
bool stackhouse::IsEmpty()
{
    if (top==-1) return 1;
    else return 0;
}
bool stackhouse::IsFull(){
    if (top==Maxlenght-1) return 1;
    else return 0;
}
void stackhouse::Push(int number){
    top++;
    CreateArray[top]=number;
}
void stackhouse::Pop (int number){
    number=CreateArray[top];
    top--;
}
void stackhouse::Sum(){
    int number=7,sum=5;
    Pop(sum);
    Pop(number);
    sum+=number;
    Push(sum);
    cout<<sum;
}
void main(){
    int number;
    stackhouse stack1;
    stackhouse();
    cout<<"Please fill the stack...";
    stack1.Push(5);
    stack1.Push(2);
    cout<<"The sum is...";
    stack1.Sum();
}
4

2 に答える 2

3

関数は、参照によってPop戻るnumberか渡す必要があります。numberそれ以外の場合、への代入numberは効果がありません。

void stackhouse::Pop(int& number) {  // <-- add the &
    number = CreateArray[top];
    top--;
}

または

int stackhouse::Pop() {
    int number = CreateArray[top];
    top--;
    return number;
}

sum = Pop()(2 番目の方法では、 の代わりに書く必要があることに注意してくださいPop(sum)。)

于 2013-06-02T04:09:24.617 に答える
1

パラメータを値で pop() メソッドに渡すのは無意味です。値を返す必要があります。

于 2013-06-02T04:08:51.900 に答える