Завдання № 9. Перевірити, чи є чотиризначний число паліндромом » Pascal - основи програмування

Основи програмування на мові Pascal

 

Спонсори

Завдання № 9. Перевірити, чи є чотиризначний число паліндромом

Завдання № 9. Перевірити, чи є чотиризначний число паліндромом
Формулювання. Дано чотиризначний число. Перевірити, чи є воно паліндромом.
Примітка: паліндромом називається число, слово або текст, які однакового чита-ються зліва направо і справа наліво. Наприклад, у нашому випадку це числа 1441, 5555, 7117 і т. Д.
Приклади інших чисел-паліндромів довільній десяткової розрядності, не відносять-ся до розв'язуваної задачі: 3, 787, 11, 91519 і т. Д.
Рішення. Для введення числа з клавіатури будемо використовувати змінну n. Введене чис-ло належить безлічі натуральних чисел і чотиризначних, тому воно свідомо більше 255, так що тип byte для її опису нам не підходить. Тоді будемо використовувати тип word.
Якими ж властивостями володіють числа-паліндроми? Із зазначених прикладів легко уви-діти, що в силу своєї однаковою «читаності» з двох сторін в них рівні перший і останній розряд, другий і передостанній і т. Д. Аж до середини. Причому якщо в числі непарне кіль-кість розрядів, то серединну цифру можна не враховувати при перевірці, оскільки при виконан-ванні названого правила число є паліндромом незалежно від її значення.
У нашій же завданню всі навіть дещо простіше, оскільки на вхід подається чотиризначний чис-ло. А це означає, що для вирішення завдання нам потрібно лише порівняти 1-ю цифру числа з 4-й і 2-ю цифру з третьою. Якщо виконуються обидва ці рівності, то число - паліндром. Залишається тільки полу-чить відповідні розряди числа в окремих змінних, а потім, використовуючи умовний опе-ратор, перевірити виконання обох рівностей за допомогою булевского (логічного) вираження.
    Однак не варто поспішати з рішенням. Може бути, ми зможемо спростити виведену схе-му? Візьмемо, наприклад, вже згадане вище число 1441. Що буде, якщо розділити його на два числа двозначних числа, перше з яких буде містити розряд тисяч і сотень вихідного, а друге - розряд десятків і одиниць вихідного. Ми отримаємо числа 14 і 41. Тепер, якщо друге число замінити на його реверсну запис (це ми робили в задачі 4), то ми отримаємо два рівних числа 14 і 14! Це перетворення цілком очевидно, так в силу того, що паліндром читається однаково в обох напрямках, він складається з двічі рази повторюваної комбінації цифр, і одна з копій просто повернена задом-наперед.
Звідси висновок: треба розбити вихідне число на два двозначних, одне з них реверсують-вати, а потім виконати порівняння отриманих чисел за допомогою умовного оператора if. До речі, для отримання реверсної записи другої половини числа нам необхідно завести ще дві пере-менниє для збереження використовуваних розрядів. Позначимо їх як a і b, і будуть вони типу byte.
Тепер опишемо сам алгоритм:
1) Вводимо число n;
2) Привласнюємо розряд одиниць числа n змінної a, потім відкидаємо його. Після при-привласнювати розряд десятків n змінної b і також відкидаємо його:

a: = n mod 10;
n: = n div 10;
b: = n mod 10;
n: = n div 10;

3) Надаємо змінної a число, що представляє собою реверсну запис зберігається в змінних a і b другій частині вихідного числа n за вже відомою формулою:
a: = 10 * a + b;

4) Тепер ми можемо використовувати перевірку булевского вираження рівності отриманих чисел n і a допомогою оператора if і організувати виведення відповіді за допомогою розгалужень:
if n = a then writeln ('Yes') else writeln ('No');

    Так як в умові завдання явно не сказано, в якій формі необхідно виводити відповідь, ми будемо вважати логічним вивести його на інтуїтивно зрозумілому користувачеві рівні, доступному в засобах самої мови Pascal. Нагадаємо, що за допомогою оператора write (writeln) можна виводити результат виразу булевского типу, причому при істинно-сті цього виразу буде виведено слово 'TRUE' («true» в пер. З англ. Означає «ис-тінний»), при хибності - слово 'FALSE' («false» в пер. з англ. означає «помилковий»). Тоді попередня конструкція з if може бути замінена на writeln (n = a);

Код:


  1. program PalindromeNum;
  2. var
  3. n: word;
  4. a, b: byte;
  5. begin
  6. readln(n);
  7. a := n mod 10;
  8. n := n div 10;
  9. b := n mod 10;
  10. n := n div 10;
  11. a := 10 * a + b;
  12. writeln(n = a)
  13. end.

zavdannya-9.rar [475 b] (cкачувань: 20)

скачать dle 10.4фильмы бесплатно Наступна сторінка » Завдання № 10. Перевірити, чи є чотириз... Попередня сторінка » Завдання № 8. Вивести назву дня тижня з...