2016-05-13 3 views
-1

Я использовал следующий код для проверки палиндрома целочисленного массива и использовал значение переменной 'declare' как проверку палиндрома. Я использовал технику, которая, если объявить 1 в конце, массив является палиндром, иначе нет. Но это не работает. В конце кода он всегда сохраняет значение declare, которое было инициализировано, независимо от остальной части кода. Отладка.C++ Integer Array Palindrome Checker

#include <iostream> 
using namespace std; 


void main() 
{ 

    int array1[3] = {0,0,1}; 
    int j = 2; 

    cout << "Given Array is:\n"; 
    for (int i = 0; i < 3; i++) 
     cout << array1[i]; 
    cout << endl; 
    int determiner[3]; 
    for (int i = 0; i <3; i++){ 


     determiner[j] = array1[i]; 
     j -= 1; 
    } 
    cout << "Reversed Array is:\n"; 
    for (int i = 0; i < 3; i++) 
     cout << determiner[i]; 
    cout << endl; 

    int declare; 
    for (int u = 0; u < 3; u++) 
    { 
     if (array1[u] = determiner[u]) 
     { 
      declare = 1; 
     } 
     if (array1[u] != determiner[u]) 
     { 
      declare = 0; 
      break; 
     } 

    } 
    cout << endl; 
    cout << declare<< endl; 

    if (declare==1) 
     cout << "Given Array is Palindrome. Cheers!!!\n"; 
    if (declare==0) 
     cout << "Emhmm! This aint Palindrome.\n"; 

    system("pause"); 
} 
+0

Добро пожаловать в переполнение стека! Похоже, вам, возможно, потребуется научиться использовать отладчик для выполнения вашего кода. С хорошим отладчиком вы можете выполнить свою программу по очереди и посмотреть, где она отклоняется от ожидаемого. Это важный инструмент, если вы собираетесь заниматься программированием. Дальнейшее чтение: ** [Как отлаживать небольшие программы] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** – NathanOliver

+1

Я голосую, чтобы закрыть этот вопрос как вне темы, потому что мы ** не ** отлаживаем службу. – NathanOliver

+1

Обратите внимание, что объявление 'void main()' в глобальном пространстве имен является незаконным в стандартном C++. Вы должны использовать стандартный 'int main (void)', если у вас нет особых причин использовать нестандартное объявление. – MikeCAT

ответ

1

, если (массив1 [и] = Определитель [и])

должно быть

, если (массив1 [и] == Определитель [и])

+0

Не заметил этого. куча, отладка :) –

+0

Нет проблем. Вы можете пометить его как ответ (или удалить/etc). – Valmond