Решена задача за палиндром - симетричен спрямо средата си стринг
Нека имаме въведен стринг, низ съставен от набор знаци, който има едно и също значение четени отляво-надясно и отдясно-наляво е палиндром. Подобни задачи са познати от древността като по-сложните варианти използват не само отделна фраза и правоъгълен набор от знаци. В говоримия език палиндром е дума или изречение, която четена отляво-надясно съвпада със същата последователност от думи, но четена в обратната последователност. В езика C++ интервалът играе особена роля. Така, въвеждането на палиндроми включващи няколко думи от рода на "алена фанела", "аз обичам мач и боза" и др. няма да издържи проверка за сравнение. Тук се разглеждат няколко примерни решения на тази задача. В първото решение ще разгледаме проверка само за естествено число палиндром, а във второто палиндром въведен като стринг, низ. В хода на всяко решение на задача за палиндром се извършва проверка за равенство на знаци в симетрични позиции. Във всеки от разглежданите случаи ще се извършва проверка за равенство - ако въведената информация е палиндром, то въведената последователност ще съвпада с инверсната. Проверката за палиндром може да бъде осъществена чрез цикъл или с рекурсивна функция.
проверка за число палиндромпроверка за низ палиндром
функция reverse за обръщане на низ
проверка за число палиндром
Едно цяло число X е палиндром, ако ново число N написано с цифрите на X, но в обратен ред е равно на числото X. Ако в цикъл с формирате ново числа, при което 1-вата му (най-лявата цифра) е равна на най-дясната цифра на въведеното число, въведеното число се дели на 10. При следващите повторения новото число се умножава по 10 (т.е.цифрите се преместват с 1 позиция наляво) и се прибавя поредната най-дясна цифра на въведеното число. След приключване на цикъла 2-те числа се сравняват. Една примерна задача за проверка на палиндром би имала следното приблизително съдържание:
Да се състави програма, която проверява дали въведено число е палиндром.Входни данни n - естествено число от интервала [10 .. 30000].
Пример: 17571 Изход: числото е палиндром
Следващата примерна програма дава решена задача - проверка за число палиндром:
проверка за низ палиндром
Тук ще разгледаме проверка дали въведен стринг, низ е палиндром, т.е. е огледално симетричен.Нека имаме въведен низ с дължина N.
С цикъл от 0 до половината от дължината на въведения низ се проверяват всички знаци в съответните позиции отляво-надясно и отдясно-наляво.
Една примерна задача за проверка на палиндром би имала следното приблизително съдържание:
Да се състави програма, чрез която от клавиатурата се въвежда ред от символи (стринг, низ). Брой символи от интервала [10..50].
Програмата да изведе на екрана дали въведеният стринг е палиндром, т.е дали четен отляво-надясно и отдясно-наляво е един и същ.
Вход: капак Изход: да.
Следващата примерна програма дава решена задача за палиндром - симетричен спрямо средата си низ:
функция reverse за обръщане на низ
В повечето езици за програмиране е включена и библиотечна функция от рода на reverse, strrev. Следващата примерна програма дава решена задача за палиндром чрез използване на функция от библиотека algorithm.Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.