Hi, i have this program that i made but my code really stinks not cause the sintaxis code but the functionality is ugly, look the program recive a string like this madamxmadam an then start to push the data into S so when find a x start to compare the pop() function in s with the rest of the string x but... i have problems for example if i put "exee" the programm doesnt do anything or if i put madamxmadam i have a this messega like the message on windows xp "temp.exe has encountered a problem and needs to close. We are sorry for the inconvenience." the program runs but before the message pres any key to continue appears then the error comes...

i really apreciate if you have a better idea for this code... like i dont made a anthor string a copy... or idont.... please i really need help...

Code:#include <iostream.h> #include<string.h> template <class T> class stack { private: T *S; int length; int top; public: stack (int inilength); ~stack(); palx(T *x); int empty(); push(T x); T pop(); }; template <class T> stack<T>::stack(int inilength) { length=inilength; S=new T[length]; top=-1; } template <class T> stack<T>::~stack() { delete S; } template <class T> int stack<T>::empty() { if(top==-1) { return 1; } else return 0; } template <class T> stack<T>::push(T x) { top++; S[top]=x; } template <class T> T stack<T>::pop() { if (empty()==-1) { cout<<"Error Underflow"; } else { top--; return S[top+1]; } } template <class T> stack<T>::palx(T *x) { int j=0; int str=strlen(x); char comp; if(j<str) { while(x[j]!='x') { push(x[j]); j++; } if(x[j]=='x') { while(top>-1) { j++; comp=pop(); if(comp!=x[j]) {cout<<"No is not";top=-1;} else if((j==str-1) && (top<0)) { cout<< "yes it is"; } } } } } void main() { char *palindrome; palindrome = new char(50); stack<char> *nueva; nueva = new stack<char>(50); cout<<"Dame un disque palindrome: "<<endl; cin>>palindrome; nueva->palx(palindrome); delete nueva; }