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

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

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

Решение:

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

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

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

Выполнение:

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

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

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

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

Задача: Палиндром в массиве
Оцени эту статью

Об авторе Olej

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

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

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

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

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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *