Студопедия Главная Случайная страница Обратная связь

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

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




Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


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


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

Понятие о синдроме нарушения бронхиальной проходимости и его клинические проявления Синдром нарушения бронхиальной проходимости (бронхообструктивный синдром) – это патологическое состояние...

Опухоли яичников в детском и подростковом возрасте Опухоли яичников занимают первое место в структуре опухолей половой системы у девочек и встречаются в возрасте 10 – 16 лет и в период полового созревания...

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Психолого-педагогическая характеристика студенческой группы   Характеристика группы составляется по 407 группе очного отделения зооинженерного факультета, бакалавриата по направлению «Биология» РГАУ-МСХА имени К...

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

Устройство рабочих органов мясорубки Независимо от марки мясорубки и её технических характеристик, все они имеют принципиально одинаковые устройства...

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