2016-01-25 2 views
-1

Я решил проблему с bool, но теперь выход не печатает целое слово спереди и назад. только частично. Я опубликовал вывод ниже. Я довольно застрял на этом. Я пробовал множество способов исправить это. Я знаю, что есть какой-то гуру C++, который может пожелать протянуть руку и советы?Как заставить эту очередь работать для палиндрома?

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

#include "Queue.h" 
void print(string s1, string q1) 
{ 
    cout << s1 << " "; 
    cout << q1 << endl; 
} 
int main() 
{ 
    bool isPalin= true; 
    string word; 
    //string temp; 
    Stack s1; 
    Queue q1; 
    void print(string, string); 

    cout<< " Enter a word you would like to see if it is a palindrome: \n"; 
    getline(cin, word); 

    cout<< "The word you entered is: "<< word<< endl; 
    for (int i = 0; i<(word.size()-1); i++) 
    { 
     string temp(word, i, 1); 
     s1.push(temp); 

    } 

    for (int i = 0; i<(word.size()-1); i++) 
    { 
     string temp(word, i,1); 

     q1.enqueue(temp); 

    } 
    while (!s1.empty()) 
    { 
     print(s1.top(), q1.front()); 

     if(s1.top() != q1.front()) 
     { 
      isPalin = false; 
      s1.pop(); 
      q1.dequeue(); 
     } 
     cout<< " Lets check if this word is a palindrome" << boolalpha<< isPalin<<endl; 
    } 

Output: 

Enter a word you would like to see if it is a palindrome: 
hello 
The word you entered is: hello 
l h 
Lets check if this word is a palindromefalse 
l e 
Lets check if this word is a palindromefalse 
e l 
Lets check if this word is a palindromefalse 
h l 
Lets check if this word is a palindromefalse 
Queue created. 
+0

Какая ошибка возникает у вас? –

+0

Мне нужно было объявить его как bool. забыл сделать это! Теперь он просто не печатает правильно. Любые советы будут оценены! –

ответ

0

кажется, что вы забыли объявить bool isPalin; где-то перед его использованием.

+0

Кроме того, я не уверен, получаю ли я логику вашей программы. Не следует ли инициализировать isPalin как false, и если палиндром обнаружен, установите значение true? – jotadepicas

+0

О, боже мой, что я не думал об этом ??? –

0

Это, очевидно, мои петли и мое время. Я пытаюсь думать о логике. Стеки - это FIFO, а очереди - LIFO. но он начинает путать меня с тем, как я это исправить. Может быть, я должен взять одну из петель и заставить ее нажимать, ставить в очередь, а затем деактивировать?

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

#include "Queue.h" 
void print(string s1, string q1) 
{ 
    cout << s1 << " "; 
    cout << q1 << endl; 
} 
int main() 
{ 
    bool isPalin= false; 
    string word; 
    //string temp; 
    Stack s1; 
    Queue q1; 
    void print(string, string); 

    cout<< " Enter a word you would like to see if it is a palindrome: \n"; 
    getline(cin, word); 

    cout<< "The word you entered is: "<< word<< endl; 
    for (int i = 0; i<=(word.size()-1); i++) 
    { 
     string temp(word, i, 1); 
     s1.push(temp); 

    } 

    for (int i = 0; i<=(word.size()-1); i++) 
    { 
     string temp(word, i, 1); 

     q1.enqueue(temp); 

    } 
    while (!s1.empty()) 
    { 
     print(s1.top(), q1.front()); 

     if(s1.top() != q1.front()) 
     { 
      isPalin = true; 
      s1.pop(); 
      q1.dequeue(); 
     } 
     cout<< " Lets check if this word is a palindrome" << boolalpha<< isPalin<<endl; 
    } 


Output: 
Enter a word you would like to see if it is a palindrome: 
word 
The word you entered is: word 
d w 
Lets check if this word is a palindrometrue 
r o 
Lets check if this word is a palindrometrue 
o r 
Lets check if this word is a palindrometrue 
w d 
Lets check if this word is a palindrometrue 
+0

, пожалуйста, не публикуйте дополнительную информацию в качестве ответа, просто отредактируйте свой вопрос, и пусть люди знают, что вы это сделали. – jotadepicas

+0

Я перестал показывать, что у меня все еще есть ошибка. Я вижу, что люди все это время делают. мне нужно переписать в другой поток для другого вопроса? –

+0

не в stackoverflow. вы должны отредактировать исходный вопрос, а не публиковать ответ. если, конечно, вы не найдете фактический ответ самостоятельно, что часто случается. – jotadepicas

Смежные вопросы