2013-06-02 46 views
-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(); 
} 
+2

如果任何人可以打擾閱讀的代碼,我的帽子給他們。我建議,艾哈邁德,你在期待別人閱讀之前正確縮進它。順便說一句,你不需要圍繞縮進代碼塊的反引號。 –

+0

Marcelo Cantos,這是我第一次發佈關於堆棧溢出的問題......所以我遇到了以我們需要的格式粘貼我的代碼的問題。抱歉! –

+0

如果沒有合適縮進的代碼複製粘貼,你必須有一個非常奇怪的編輯器。無論如何,您都可以通過編輯問題來修復它。 –

回答

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()代替Pop(sum)。)

1

將值傳遞給pop()方法是沒有意義的。它需要返回一個值。