#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. 我无法正确输出
- 2. 我无法输出C++
- 3. 无法从标准输出
- 4. 我无法从XML输入
- 5. 此输入文本框无法打印输出
- 6. 我无法注销输出C程序
- 7. 无法输出我的整个文件
- 8. Swiftlint输出文件我无法获得
- 9. 无法从子进程获得输出
- 10. 无法从iBATIS.NET获得日志输出
- 11. 无法从JSON文件输出 - 主干
- 12. 无法从函数获得输出
- 13. 无法从LogStash创建csv输出
- 14. 无法从ruby压制ffmpeg输出
- 15. 无法从vb.net中的checkedlistbox中输出
- 16. 无法从XMLHttpRequest获取JSON输出
- 17. 无法从get-filehash获取输出
- 18. 无法从cppcheck生成XML输出
- 19. 我无法从阵列输出中删除空值
- 20. 似乎无法从我的课上得到输出
- 21. 无法从我的c + +应用程序得到输出
- 22. 我无法从draft-js获取html输出?
- 23. 无法json_decode从我的PHP web服务收到的输出?
- 24. 无法找到此输出格式的FOEventHandler或Renderer
- 25. XSLT:我如何获得此输出?
- 26. 我将如何获得此输出?
- 27. 我无法输入输入
- 28. 为什么我使用java TreeSet Compare方法获取此输出?
- 29. 我的布尔输出无?
- 30. NRPE:无法读取输出
请澄清你的问题。 –
你能指定你给程序的输入和你期望的输出吗? – CiaPan
实际上发生了错误 –