Студопедия — ПРАКТИЧЕСКИЙ ПРИМЕР НА 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; просмотров: 815. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

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

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

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Эндоскопическая диагностика язвенной болезни желудка, гастрита, опухоли Хронический гастрит - понятие клинико-анатомическое, характеризующееся определенными патоморфологическими изменениями слизистой оболочки желудка - неспецифическим воспалительным процессом...

Признаки классификации безопасности Можно выделить следующие признаки классификации безопасности. 1. По признаку масштабности принято различать следующие относительно самостоятельные геополитические уровни и виды безопасности. 1.1. Международная безопасность (глобальная и...

Прием и регистрация больных Пути госпитализации больных в стационар могут быть различны. В цен­тральное приемное отделение больные могут быть доставлены: 1) машиной скорой медицинской помощи в случае возникновения остро­го или обострения хронического заболевания...

Травматическая окклюзия и ее клинические признаки При пародонтите и парадонтозе резистентность тканей пародонта падает...

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

Принципы и методы управления в таможенных органах Под принципами управления понимаются идеи, правила, основные положения и нормы поведения, которыми руководствуются общие, частные и организационно-технологические принципы...

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