Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C++ (http://www.go4expert.com/forums/cpp/)
-   -   Palindrome using stacksssss (http://www.go4expert.com/forums/palindrome-using-stacksssss-t10573/)

spamfree4m3 13May2008 06:29

Palindrome using stacksssss
 
Hey guys,

I am trying to build a program that can read a palindrome from a stack that i create... Below is my code that i have come up with some far but it seems that i am missing a few things. The current error i get is that constructers are not allowed a return type for the stack :: stack()... Also in my main (which i dont have yet) i am guessing that that is where i grab the string from the user? the cin?

Any help is welcomed!!

Thanks in advance!!

Code:

#include <iostream>
#include <string>

using namespace std;


class stack
{
public:
        stack ();
        stack(int n);
        void push(char x);
        void pop(char B);
        bool isempty();
        bool isfull();
private:
        int TOP;
        char * storage;
        int size;
}


stack :: stack()
{
        storage = new char[5];
        TOP = -1;
}

bool stack :: isempty()
{
        return TOP == -1;
}

stack :: stack (int n)
{
        size = n;
        storage = new char[n];
        TOP = -1;
}

bool stack :: isfull()
{
        return TOP == size -1;
}

void stack :: push(char x)
{
        if (isfull())
       
                cout<<"Stack is full"<<endl;
       
        else
               
                TOP++;
                storage[TOP]=x;
       
}

void stack :: pop(char B)
{
        if (isempty())
        {
                cout<<"Stack is empty"<<endl;
        }
        else
        {
                B = storage[TOP--];
        }
}


spamfree4m3 14May2008 04:38

Re: Palindrome using stacksssss
 
Not sure if anyone is even on these forums anymore... BUt i worked with the code some more and kind of chnaged everything around and now i have this..

Code:

#include <iostream>
#include <string>
using namespace std;



class stack
{
public:
      stack ();
      stack (int n);
      void push (char x);
      char pop ();
      bool isempty ();
      bool isfull ();

private:
      int TOP;
      char *storage;
      int size;
};

stack::stack()
{
          storage = new char [28];
          TOP=-1;
}

stack::stack(int n)
{
      size = n;
      storage = new char [size];
      TOP = -1;
}

bool stack::isempty()
{
      return TOP == -1;
}

bool stack::isfull()
{
      return TOP == size - 1;
}

void stack::push(char x)
{
      if (isfull())
              cout << "I'm sorry, the stack is currently full." << endl;
      else
              storage[++TOP] = x;
}

char stack::pop()
{
          char b;
        if (isempty())
              cout << "I'm sorry, the stack is currently empty." << endl;
      else
 
                  b = storage [TOP--];
                        return b;
}

void main()
{
        string x;
        int i = 0;
        stack stackone;
        stack stacktwo;
        stack stackthree;
        cout<<"Please enter a word or phrase:"<<endl;
        getline(cin, x);

        while (i< x.length()-1)
        {
                if(x[i]>='a'&&x[i]<='z'||(x[i]>='A'&&x[i]<='Z'))
                        stackone.push(x[i]);
                        stacktwo.push(x[i]);
                        i++;
        }

       
        while (!stackone.isempty()&&stackone.pop()==stackthree.pop());
        {
                if(stackone.isempty())
                        cout<<"This is a palindrome."<<endl;
                else
                        cout<<"This is not a palindrome."<<endl;
        }



}


But everything just puts out, This is not a palindrome, and for some reason it posts the stack is empty like 4 times and i cant fiugre out why


All times are GMT +5.5. The time now is 08:40.