c++ - 我无法从中得到输出

标签 c++ stack

#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;

}

最佳答案

最简单的错误修复是更改 int size=10;static const int size=10; . 在此之后,除了出现警告 stack[top];为空语句,display 中存在逻辑错误循环 for(int i=top;i<size-1;i++)它应该在哪里 for(int i=top;i<size;i++)for(int i=top;i<=size-1;i++) .

关于c++ - 我无法从中得到输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45319144/

相关文章:

C++ 等同于 sscanf?

c# - c#中使用single方法会出现Stackoverflow异常吗?

C - 尝试更改堆栈上的值在一种情况下有效,但在另一种情况下无效,这是为什么?

c++ - 将链表存储为数组 C++ 中的索引

c++ - 我无法打开可变文件名

C++ Map/Set 迭代器不可递增错误

c++ - 选择多个表 MySQL

c - 关于堆栈状态

c - 为什么函数的参数被写入主堆栈帧而不是函数堆栈帧?

c - 我应该收到此错误 : variable-sized object may not be initialized?