§ 16. Тып даных структура (struct)
16.3. Выкарыстанне структур для апісання даты і часу
Прыклад 16.12. Бягучы час зададзены ў гадзінах, мінутах і секундах. Колькі часу будзе праз k секунд? Этапы выканання задання I. Зыходныя даныя: v — структура, якая апісвае час, k — колькасць секунд. II. Вынік: новы час. III. Алгарытм рашэння задачы. 1. Увод зыходных даных. 2.1.Перавядзём бягучы час у секунды. Для гэтага падсумуем колькасць гадзін, памножаную на 3600 (колькасць секунд у гадзіне), колькасць мінут, памножаную на 60, і колькасць секунд. 3. Вывад выніку. IV. Апісанне пераменных: k – int, v – struct. Прыклад 16.13. Зададзены дзве даты. Вызначыць колькасць дзён паміж імі. Этапы выканання задання I. Зыходныя даныя: d1, d2 — структуры, якія апісваюць даты. II. Вынік: колькасць дзён паміж двума датамі. III. Алгарытм рашэння задачы.
«math style=¨font-family:`Courier New`¨ xmlns=¨http://www.w3.org/1998/Math/MathML¨»«mstyle mathsize=¨18px¨»«mi mathvariant=¨normal¨»N«/mi»«mo»§#160;«/mo»«mo»=«/mo»«mo»§#160;«/mo»«mi mathvariant=¨normal¨»d«/mi»«mo»§#160;«/mo»«mo»+«/mo»«mo»§#160;«/mo»«msub»«mi mathvariant=¨normal¨»d«/mi»«mn»1«/mn»«/msub»«mo»§#160;«/mo»«mo»+«/mo»«mo»§#160;«/mo»«msub»«mi mathvariant=¨normal¨»d«/mi»«mn»2«/mn»«/msub»«mo»§#160;«/mo»«mo»+«/mo»«mo»§#160;«/mo»«mo».«/mo»«mo».«/mo»«mo».«/mo»«mo»§#160;«/mo»«mo»+«/mo»«mo»§#160;«/mo»«msub»«mi mathvariant=¨normal¨»d«/mi»«mrow»«mi mathvariant=¨normal¨»m«/mi»«mo»§#160;«/mo»«mo»-«/mo»«mo»§#160;«/mo»«mn»1«/mn»«/mrow»«/msub»«mo»§#160;«/mo»«mo»+«/mo»«mo»§#160;«/mo»«mo»(«/mo»«mi mathvariant=¨normal¨»g«/mi»«mo»§#160;«/mo»«mo»-«/mo»«mo»§#160;«/mo»«mn»1900«/mn»«mo»)«/mo»«mo»§#160;«/mo»«mo»*«/mo»«mo»§#160;«/mo»«mn»365«/mn»«mo»§#160;«/mo»«mo»+«/mo»«mo»§#160;«/mo»«mo»(«/mo»«mi mathvariant=¨normal¨»g«/mi»«mo»§#160;«/mo»«mo»§#8211;«/mo»«mo»§#160;«/mo»«mn»1900«/mn»«mo»)«/mo»«mo»/«/mo»«mn»4«/mn»«mo»,«/mo»«/mstyle»«/math» дзе d — нумар дня ў даце, d1, d2, ... dm – 1 — колькасць дзён у месяцах, якія папярэднічаюць зададзенаму, (y – 1900) * 365 — колькасць дзён за поўны мінулы год да бягучай даты, (g – 1900)/4 — колькасць дзён, якія трэба дабавіць за мінулыя высакосныя гады. Формула будзе правільнай для дат ад 01.01.1900 да 28.02.2100. (2100 год не з’яўляецца высакосным, паколькі 2100 дзеліцца на 100, але не дзеліцца на 400). 3. Створым функцыю date_to_int. |
Прыклад 16.12. V. Праграма:
VI. Тэсціраванне. Прыклад 16.13. V. Праграма:
VI. Тэсціраванне. У функцыі пераўтварэння неабходна дадатковая праверка для выпадку, калі бягучы год з’яўляецца высакосным. Тады дадатковы нумар павінен быць дабаўлены толькі да дат пасля 28 лютага. 1900 г. выключаецца, паколькі ён не з’яўляецца высакосным. |