У даній статті вирішується завдання по реалізації програми (коду) на C ++ для перевірки, чи є слово, рядок або число паліндромом. Програма повинна просити ввести рядок (не важливо слово це або число), перевіряти, чи є вона паліндромом і повертати результат.
Що таке паліндром?
Паліндром - це рядок (або число), яке можна прочитати однаково справа наліво, або зліва направо.
Наприклад, слово «кіт» не є паліндромом, а слово «потоп» є паліндромом. Також і з числами: число 12314 - не паліндром, число 345543 - паліндром.
Зрозумівши це, можна починати реалізовувати алгоритм програми.
Функція перевірки слова на палідром в C ++
Для визначення, чи є рядок паліндромом. напишемо функцію, яка прийме на вхід рядок (об'єкт string), а на виході поверне логічне значення (тип даних bool). Рядок буде містити слово або число, яке функція перевірить на паліндромний. Вихідна значення true буде відповідати тому, що рядок є паліндромом, false буде відповідати тому, що рядок НЕ є паліндромом.
Зверніть увагу, що рядок - це, по суті своїй, звичайний одномірний масив.
Тому функція буде просто порівнювати перший і останній елемент масиву, після порівняє другий і передостанній елемент і так далі до середини. Якщо всі вони рівні, значить рядок є паліндромом. Нічого складного.
Реалізуємо це у вигляді коду.
Для початку необхідно визначити, скільки символів в рядку, для цього скористаємося методом length ().
Зверніть увагу, в циклі є умова. Якщо i-ий елемент не дорівнює елементу len-i-1, то відразу повертається false (Тобто не паліндром).
Масиви в C ++ нумеруються від 0, тому щоб отримати перший елемент рядка, нам потрібно дістати 0-ой елемент з масиву, а щоб останній, то нам потрібно дістати len-1.
Як працює функція перевірки на паліндром
Припустимо, у нас слово «мотор», то len буде дорівнює 5.
Щоб отримати значення останньої букви, необхідно звернутися до масиву рядки з індексом len-1 = 4. А щоб отримати значення першої букви - звертаємося до елементу 0.
Для наочності трохи визуализируем роботу функції:
1.Получаем слово «грудку».
Порівнюємо до і до, вони рівні, йдемо далі.
Порівнюємо про і про, вони рівні. Далі цикл зупиняється, тому що запущений до len / 2, а це 5/2 = 2. У C ++ результатом цілочисельного ділення є ціле число з відкинутою дробової частиною.
5. В кінці функції повертається true. Що означає, що слово паліндром.
Якби під час порівнянь букв вийшло так, що вони НЕ рівні, то функція відразу б завершила роботу і повернула значення false. Що означає, що слово не паліндром.
Використовуємо нашу функцію перевірки на паліндром в програмі на C ++
Тепер нашу функцію можна вставити в програму на C ++ і використовувати. Напишемо невеликий додаток, яке просить користувача ввести слово (або число) в консоль, а після цього повідомляє йому, чи є введене слово паліндромом.
Код нашого застосування - це і є рішення задачі «Перевірити, чи є слово паліндромом на C ++»
Код програми на C ++: