Студопедия — ПРАКТИЧЕСКИЙ ПРИМЕР НА PASCAL
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

ПРАКТИЧЕСКИЙ ПРИМЕР НА PASCAL






 

3.1. Задание. Написать программу, позволяющую:

вычислять количество дней в том месяце, которому принадлежит заданная дата d;

проверять правильность даты d (т.е. чтобы не было 31 июня, 30 февраля и т.д.);

подсчитывать, сколько дней прошло от начала нашей эры (1.01.1) до даты d.

Рис. 3.1 Структурная блок-схема

Входные и выходные параметры программы

Исходными данными для решения этой задачи являются:

- число (dd);

- месяц (mm);

- год (yyyy).

Выходные данные:

- количество дней (days) в месяце, которому принадлежит заданная дата;

- количество дней, прошедших от начала нашей эры (Alldays) до заданной даты.

 

Листинг программы

 

Program DATE;

var

Date: string[11]; {Введённая дата (d)}

Day: Shortint; {день}

Month: Shortint; {месяц}

Year: integer; {год}

{Функция возвращает количество дней в указанном месяце.

Вход:

month - номер месяца

Выход:

количество дней в указанном месяце}

function Days(month: byte): byte;

begin

case month of

{В этих месяцах 31 день: }

1, 3, 5, 7, 8, 10, 12: Days: = 31;

{Високосным является каждый четвёртый год кроме каждого сотого, но каждый четырёхсотый}

2: if (Year mod 400 = 0) or ((Year mod 4 = 0) and (Year mod 100 < > 0))

then Days: = 29 else Days: = 28;

{Все остальные месяцы - 30 дней}

else Days: = 30;

end;

end;

{Функция перевода даты из строкового формата в цифровой и проверки корректности её ввода}

function Date2Var(date: string): boolean;

var

code: integer;

p: byte;

begin

{Предполагаем, что дата введена неверно}

Date2Var: = false;

{Ищем позицию точки в строке}

p: = pos('.', date);

{Если точка найдена: }

if p < > 0 then

begin

{преобразовываем значение до точки в число}

val(copy(date, 1, p-1), Day, code);

{Если преобразование произошло успешно: }

if code = 0 then

begin

{Удаляем символы до точки включительно}

delete(date, 1, p);

{Ищем следующую точку}

p: = pos('.', date);

{Если точка найдена: }

if p < > 0 then

begin

{преобразовываем значение до точки в номер месяца}

val(copy(date, 1, p-1), Month, code);

{Если преобразование произошло успешно: }

if code = 0 then

begin

{Удаляем символы до точки включительно}

delete(date, 1, p);

{Преобразовываем остаток строки в номер года}

val(date, Year, code);

{Если преобразование произошло успешно: }

if code = 0 then

{Проверяем, получились ли положительные числа}

if Day > 0 then if (Month > 0) and (Month < = 12) then if Year > 0 then

{Проверяем, соответствует ли число дней введённому месяцу}

if Days(Month) > = Day then

{если все проверки завершились успешно, возвращаем true}

Date2Var: = true;

end;

end;

end;

end;

end;

{Функция возвращает количество дней, прошедших с начала эры до указанной даты}

function AllDays: longint;

var

y, tmp: longint;

i: integer;

begin

y: = Year-1;

{Находим количество дней, прошедших до начала указанного года}

tmp: = y*365 + y div 4 - y div 100 + y div 400;

{Прибавляем количество дней до начала указанного месяца}

for i: = 1 to Month-1 do tmp: = tmp+Days(i);

{Прибавляем количество дней, прошедших в указанном месяце (не считая последний)}

tmp: = tmp + Day-1;

{Присваиваем функции возвращаемый результат}

AllDays: = tmp;

end;

{Начало основной программы}

begin

write('Введите дату в формате dd.mm.yyyy: ');

readln(Date);

if not Date2Var(Date) then writeln('Дата введена неверно! ')

else

begin

writeln('Во введённом месяце дней: ', Days(Month));

writeln('От начала эры прошло дней: ', AllDays);

writeln('Нажмите Enter для выхода...');

readln;

end;

end.

 







Дата добавления: 2014-11-12; просмотров: 796. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Ситуация 26. ПРОВЕРЕНО МИНЗДРАВОМ   Станислав Свердлов закончил российско-американский факультет менеджмента Томского государственного университета...

Различия в философии античности, средневековья и Возрождения ♦Венцом античной философии было: Единое Благо, Мировой Ум, Мировая Душа, Космос...

Характерные черты немецкой классической философии 1. Особое понимание роли философии в истории человечества, в развитии мировой культуры. Классические немецкие философы полагали, что философия призвана быть критической совестью культуры, «душой» культуры. 2. Исследовались не только человеческая...

Философские школы эпохи эллинизма (неоплатонизм, эпикуреизм, стоицизм, скептицизм). Эпоха эллинизма со времени походов Александра Македонского, в результате которых была образована гигантская империя от Индии на востоке до Греции и Македонии на западе...

Демографияда "Демографиялық жарылыс" дегеніміз не? Демография (грекше демос — халық) — халықтың құрылымын...

Субъективные признаки контрабанды огнестрельного оружия или его основных частей   Переходя к рассмотрению субъективной стороны контрабанды, остановимся на теоретическом понятии субъективной стороны состава преступления...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия