Палиндром. Проверить, является ли слово, строка, число палиндромом на C++

Палиндром

Палиндром

В данной статье решается задача по реализации программы(кода) на C++ для проверки, является ли слово, строка или число палиндромом. Программа должна просить ввести строку( не важно слово это или число), проверять, является ли она палиндромом и возвращать результат.

Что такое палиндром?

Палиндромэто строка(или число), которое можно прочитать одинаково справа налево, либо слева направо.

К примеру, слово «кот» не является палиндромом, а слово «потоп» является палиндромом. Также и с числами: число 12314 — не палиндром, число 345543 — палиндром.

Поняв это, можно начинать реализовывать алгоритм программы.

Функция проверки слова на палидром в C++

Для определения, является ли строка палиндромом, напишем функцию, которая примет на вход строку(объект string), а на выходе вернет логическое значение(тип данных bool). Строка будет содержать слово или число, которое функция проверит на палиндромность. Выходное значение true  будет соответствовать тому, что строка является палиндромом, false будет соответствовать тому, что строка НЕ является палиндромом.

Обратите внимание, что строка — это, по сути своей, обычный одномерый массив.

Поэтому функция будет просто сравнивать первый и последний элемент массива, после сравнит второй и предпоследний элемент и так далее до середины. Если все они равны, значит строка является палиндромом. Ничего сложного.

Реализуем это в виде кода.

Для начала необходимо определить, сколько символов в строке, для этого воспользуемся методом length().

word — это строка, которую приняла функция. Теперь переменная len хранит значение длины строки.

После чего создадим цикл от 0 до len/2 и будем сравнивать элементы.

Обратите внимание, в цикле есть условие. Если i-ый элемент не равен элементу len-i-1, то сразу возвращается false(То есть не палиндром).

Почему len-i-1?

Массивы в C++ нумеруются от 0, поэтому чтобы получить первый элемент строки, нам нужно достать 0-ой элемент из массива, а чтобы последний, то нам нужно достать len-1.

Как работает функция проверки на палиндром

Допустим, у нас слово «мотор», то len будет равна 5.

|м о т о р|

|0 1 2 3 4|

Чтобы получить значение последней буквы, необходимо обратиться к массиву строки с индексом len-1 = 4. А чтобы получить значение первой буквы — обращаемся к элементу 0.

Для наглядности немного визуализируем работу функции:

1.Получаем слово «комок».

2.Запускаем цикл.

3. комок

Сравниваем к и к, они равны, идем дальше.

4. комок

Сравниваем о и о, они равны. Далее цикл останавливается, т.к. запущен до len/2, а это 5/2 = 2. В C++ результатом целочисленного деления является целое число с отброшенной дробной частью.

5. В конце функции возвращается true. Что означает, что слово палиндром.

Если бы во время сравнений букв получилось так, что они НЕ равны, то функция сразу бы завершила работу и вернула значение false. Что означает, что слово не палиндром.

Используем нашу функцию проверки на палиндром в программе на C++

Теперь нашу функцию можно вставить в программу на C++ и использовать. Напишем небольшое приложение, которое просит пользователя ввести слово(или число) в консоль, а после этого сообщает ему, является ли введенное слово палиндромом.

Код нашего приложения — это и есть решение задачи «Проверить, является ли слово палиндромом на C++»

Код программы на C++:

Теперь компилируем, запускаем и проверяем.

Проверим словом «palindrom»

palindrom - не палиндром

palindrom — не палиндром

Программа сообщила, что слово не является палиндромом, а это так и есть на самом деле.

Проверим выдуманным словом палиндромом «potomotop»

potomotop - палиндром

potomotop — палиндром

Программа сообщила, что введенное слово палиндром. Всё верно.

Вот таким алгоритмом можно проверить является ли слово палиндромом. Данная программа работает не только со словами, но и с числами. Не требует сторонних библиотек. Решения других задач по программированию на языке C++ можно найти в этом разделе.

 

Палиндром. Проверить, является ли слово, строка, число палиндромом на C++: 1 комментарий

  1. Роман

    Оооооочень понятно и доходчиво, спасибо большое!

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

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