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



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

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

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

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

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

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

Классификация и основные элементы конструкций теплового оборудования Многообразие способов тепловой обработки продуктов предопределяет широкую номенклатуру тепловых аппаратов...

Именные части речи, их общие и отличительные признаки Именные части речи в русском языке — это имя существительное, имя прилагательное, имя числительное, местоимение...

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