Задача: Палиндром в массиве

Оцени эту статью

Проверить число в массиве на наличие палиндрома (именно через массив).

задача с решением, палиндром, наличие палиндрома в массиве с++, число палиндром, практика программирования
Определение Палиндром — сайт Википедия

Решение:

Единственное место, которое в коде может вызвать затруднение, это логическое присвоение:

Здесь проверяется равенство символов, отстоящих на i позиций от начала и от конца исследуемой строки. Если результат отрицательный (не равно), то это уже не палиндром, и можно выходить из цикла, а дальнейшие сравнения не проводить. Переменная poli здесь не является необходимой, и оставлена для наглядности — можно принимать решение (if) прямо из проверяемого условия.

Проверки делаются до середины строки, потому что дальнейшее продолжение цикла (из-за симметрии условия) только повторит то, что уже сделано ранее.

Выполнение:

задача с решением, палиндром, наличие палиндрома в массиве с++, число палиндром, практика программированияПримечание:

Как легко смогут заметить наблюдательные читатели, этот код проверит на палиндром не только запись числа, но и любую текстовую строку, при выполнении таких условий:

  • строка содержит только латинские (не русские, не китайские, …) литеры (интернациональные литеры в Unicode представляются более чем 1-м байтом);
  • строка не содержит символов пробела и знаков препинания (потому что в определениях палиндромов эти символы, обычно, исключают из сравнений: «Я иду с мечем судия«, «На в лоб, болван«).

Рассылка новых уроков по программированию:

Olej

Об авторе Olej

Стаж практических программных разработок около 40 лет. Преподаватель международной софтверной компании Global Logic. Постоянный автор публикаций IBM Developer Works. Научный редактор книжного издательства компьютерной литературы "Символ-Плюс", Санкт-Петербург.

Задача: Палиндром в массиве: 2 комментария

  1. Ошибка в коде. Все двузначные числа, например: 11, 22, 33, …, 99 программа распознает как «не палиндромы», хотя это не так. Код требует доработки.

    1. Никакой ошибки! Вот проверка прогоном в операционной системе Linux с компилятором GCC, который куда точнее соответствует стандарту синтаксиса C++:

      Не знаю, почему у вас получаются такие результаты (возможно нужно расставить дополнительные скобки из-за приоритетов операций).

Добавить комментарий

Код размещайте в тегах: <pre class="lang:c++ decode:true ">YOUR CODE</pre>