Перетворення дати в числовий формат
Алгоритм рішення задачі:
Алгоритми перетворення сатиричного представлення дати в чисельну можуть використовуватися в програмах, які виконують будь-які обчислення, пов'язані з датами.
Ми не будемо писати відразу найбільш ефективну і коротку програму. Спочатку алгоритм рішення буде досить прозорим і простим.
Програма на мові Паскаль:
Алгоритм 1. Лінійна програма
Введена користувачем дата знаходиться в рядкової змінної s.
Витяг будь-якого символу з рядка проводиться так само, як отримання елемента масиву за його індексом. Наприклад, s [1] призведе до вилучення першого символу терміни. Можна навіть витягти зріз: s [1..2] витягне перші два символи. Однак як їх перетворити в число?
Функція ord повертає порядковий номер переданого їй аргументу. Якщо їй передати символ, то вона поверне його номер в таблиці символів. Це буде величина цілого типу. Наприклад, символ "0" (нуль) може бути 48-м. Тому ord ( '0') поверне 48. Далі номера цифр йдуть по порядку один за одним: '1' - 49, '2' - 50, '3' - 51 і т.д.
Щоб перевести символьне уявлення цифри (наприклад, '7') в число (7), досить виконати такий вислів: ord ( '7') - ord ( '0'). Різниця номерів між даними символами якраз становить сім одиниць. Таким чином, ми можемо перевести символьне уявлення цифри в число.
Наступна проблема полягає в тому, що числа в даті двозначні (день і місяць) і чотиризначні (рік). Ми ж отримали значення тільки окремих цифр. Однак, маючи цифри і знаючи їхню позицію в числі, неважко обчислити саме число. Наприклад, якщо перше число 2 (десятки), а друге 4 (одиниці), то отримати 24 легко: 2 * 10 + 4. Рік wxyz обчислюється за формулою w * 1000 + x * 100 + y * 10 + z.
Крім того, слід не забути пропустити точки в рядку дати. Це символи під номерами 3 і 6. Вони ніякої участі в обчисленнях приймати не повинні.
Алгоритм 2. Використання циклу і масиву
Як можна помітити, занадто багато разів в попередній програмі виконується вираженіеord (s [цифра]) - ord ( '0'). Подібні дії краще виконувати в циклі, а результат поміщати не в змінні, а масив.
Ви бажаєте перевести в циклі всі символи рядка, за винятком 3-го і 6-го (тих, які є точкою), і заповнити масив.
Алгоритм 2. Швидке рішення
Насправді не обов'язково використовувати масив, цикл і навіть зайві змінні. Все робиться набагато простіше, проте вираження виходять досить довгими і можуть бути незрозумілі для початківців.