简体   繁体   中英

i can't get an output from this

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

}

Simplest fix to errors occurring is changing int size=10; to static const int size=10; . After this, apart from occurring warning with stack[top]; being empty statement, there is logical error in display loop in for(int i=top;i<size-1;i++) where it should be either for(int i=top;i<size;i++) or for(int i=top;i<=size-1;i++) .

As answered by Tomáš Zahradníček, you need to fix a few things to have your code compile (using -std=c++11).

I used for(int i=top; i<size; ++i) in the display method. I also add that your pop method could simply do top++; without overwriting the stack.

Anyways, regarding your problem of nothing being printed on cout : you obviously tried with 1 item pushed in the stack, but not with 2, which would have pointed to faulty line (the for loop).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM