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

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

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




Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Условия, необходимые для появления жизни История жизни и история Земли неотделимы друг от друга, так как именно в процессах развития нашей планеты как космического тела закладывались определенные физические и химические условия, необходимые для появления и развития жизни...

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

Примеры задач для самостоятельного решения. 1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P   1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P...

ИГРЫ НА ТАКТИЛЬНОЕ ВЗАИМОДЕЙСТВИЕ Методические рекомендации по проведению игр на тактильное взаимодействие...

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

Виды нарушений опорно-двигательного аппарата у детей В общеупотребительном значении нарушение опорно-двигательного аппарата (ОДА) идентифицируется с нарушениями двигательных функций и определенными органическими поражениями (дефектами)...

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