Перетворення дати в числовий формат

Алгоритм рішення задачі:

Алгоритми перетворення сатиричного представлення дати в чисельну можуть використовуватися в програмах, які виконують будь-які обчислення, пов'язані з датами.

Ми не будемо писати відразу найбільш ефективну і коротку програму. Спочатку алгоритм рішення буде досить прозорим і простим.

Програма на мові Паскаль:

Алгоритм 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. Швидке рішення

Насправді не обов'язково використовувати масив, цикл і навіть зайві змінні. Все робиться набагато простіше, проте вираження виходять досить довгими і можуть бути незрозумілі для початківців.