#include<iostream>
using namespace std;
class stack
{
int size=10;
int stack[size]={0}, value=0, top;
top=size;
public:
void push(int v)
{
if(top==0)
cout<<"\nstack is full\n";
else
{--top;
stack[top]=v;}
}
void pop()
{
if(top==size)
cout<<"\nstack is empty\n";
else
{top++;
stack[top];
stack[top-1]=0;
}
}
void display()
{
if(top==size)
cout<<"\nstack empty\n";
else
{
for(int i=top;i<size-1;i++)
{
cout<<stack[i];
}
}
}
};
int main()
{
stack s;
char t;
int value,ch;
do
{
cout<<"\n1.push\n";
cout<<"\n2.pop\n";
cout<<"\n3.display\n";
cout<<"enter choice:\n";
cin>>ch;
switch(ch)
{
case 1:cout<<"\nenter the value to be pushed\n";
cin>>value;
s.push(value);
break;
case 2:s.pop();
break;
case 3:s.display();
break;
default:
cout<<"\nwrong choice\n";
}
cout<<"\ndo u want to retry\n";
cin>>t;
}while(t=='y' || t=='Y');
return 0;
}
Q
我無法從此輸出
0
A
回答
1
最簡單的錯誤修復方法是將int size=10;
更改爲static const int size=10;
。 在此之後,除了stack[top];
爲空語句發生警告之外,在for(int i=top;i<size-1;i++)
中的display
循環中存在邏輯錯誤,它應該是for(int i=top;i<size;i++)
或for(int i=top;i<=size-1;i++)
。
0
正如TomášZahradníček回答的那樣,您需要修復一些東西來編譯代碼(使用-std = C++ 11)。
我在display
方法中使用for(int i=top; i<size; ++i)
。我還補充說,你的pop
方法可以簡單地做top++;
而不覆蓋堆棧。無論如何,關於你在cout上沒有打印任何東西的問題:你顯然嘗試了1個物品被推入堆棧,但沒有與2,這將指出錯誤的行(for
循環)。
相關問題
- 1. 我無法從XML輸入
- 2. 此輸入文本框無法打印輸出
- 3. 無法輸出我的整個文件
- 4. 我無法註銷輸出C程序
- 5. 無法從iBATIS.NET獲得日誌輸出
- 6. 無法從LogStash創建csv輸出
- 7. 無法從函數獲得輸出
- 8. 無法從get-filehash獲取輸出
- 9. 無法從XMLHttpRequest獲取JSON輸出
- 10. 我無法從陣列輸出中刪除空值
- 11. 似乎無法從我的課上得到輸出
- 12. 我無法輸入輸入
- 13. 我將如何獲得此輸出?
- 14. XSLT:我如何獲得此輸出?
- 15. 爲什麼我使用java TreeSet Compare方法獲取此輸出?
- 16. 無法理解輸出
- 17. 無法看到輸出
- 18. 無法獲得json_decode()輸出
- 19. 無法理解Malloc輸出
- 20. NRPE:無法讀取輸出
- 21. 無法獲得輸出
- 22. 無法打印輸出
- 23. HtmlWebpackPlugin無法正常輸出
- 24. 無法格式化輸出
- 25. 無法打開輸出流
- 26. 無法理解python輸出
- 27. 無法打印從我的方法輸出,本地跳轉錯誤
- 28. 無法從源輸入生成相同的輸出圖像
- 29. 無法從「出T」轉換成「輸出分量」
- 30. 我無法得到jQuery的輸出..!請幫幫我..!
請澄清你的問題。 –
你能指定你給程序的輸入和你期望的輸出嗎? – CiaPan
實際上發生了錯誤 –