2012-09-23 6 views
0

Je me trouve curieusement perplexe sur ce devoir. L'idée est de créer un programme Palindrome, en utilisant un en-tête spécifique que le professeur veut que nous utilisions, mais pour une raison quelconque, quand je l'exécute, juste après avoir entré la phrase, le programme se bloque sur moi.C++ Programme Palindrome

Voici le programme

#include <iostream> 
#include <ctime> 
#include "STACK.h" 
using namespace std; 

int main(void) 
{ 
// Declare variables 
time_t   a; 
STACK<char, 80>  s; 
STACK<char, 80>  LR; 
STACK<char, 80>  RL; 
char   c; 
char   c1; 
char   c2; 

// Displays the current time and date 
time(&a); 
cout << "Today is " << ctime(&a) << endl; 

// Prompts the user to enter the string 
cout << "Enter a phrase: "; 
while(cin.get(c) && (c != '\n')) 
{ 

    if(isalpha(c)) 
    { 
     c = toupper(c); 
     LR.PushStack(c); 
     s.PushStack(c); 
    } 

} 

// Copies s into RL in reverse order 
while(!(s.EmptyStack())) 
{ 
    c = s.PopStack(); 
    RL.PushStack(c); 
} 

// Checks for Palindrome 
while(!(LR.EmptyStack())) 
{ 
    c1 = LR.PopStack(); 
    c2 = RL.PopStack(); 

    if(c1 != c2) 
    { 
    break; 
    } 
} 


// Displays the result 
if(LR.EmptyStack()) 
{ 
    cout << "Palindrome"; 
} 
else 
{ 
    cout << "Not a Palindrome"; 
} 

return 0; 
} 

Et voici l'en-tête (je ne suis pas autorisé à changer cela)

#ifndef STACK_H 
#define STACK_H 
template <class T, int n> 
class STACK 
{ private: T a[n]; 
    int counter; 
    public: 
    void MakeStack() { counter = 0; } 
bool FullStack() 
    { return (counter == n) ? true : false ; } 
bool EmptyStack() 
    { return (counter == 0) ? true : false ; } 
void PushStack(T x) 
    { a[counter] = x; counter++; } 
T PopStack() 
    { counter--; return a[counter]; } 
}; 
    #endif 

Répondre

2

Vous n'êtes pas appeler MakeStack, qui fixera la taille initiale STACK (0).

+3

Oh mon Dieu, je ne peux pas croire que j'ai oublié ça ... – user1675108

+3

C'est ce que les constructeurs sont pour, alors ne le considérez pas comme votre faute - c'est la conception de la bibliothèque qui a créé ce problème :) – KCH