Представим, что нам надо определить принадлежит ли определенная дата диапазону времени, т.е. находится ли между двумя другими датами.
Две крайние даты пусть задаются программно. А дату, требующую исследования, вводит пользователь.
Задачу можно решить как минимум двумя способами. Например, для каждой даты вычислить количество дней, прошедших с какой-нибудь начальной даты (например, нулевого года). После чего сравнить полученные значения. Если количество дней анализируемой даты будет находиться между двумя другими, то дата принадлежит диапазону.
Второй, более простой, способ это «поэлементное» сравнение дат: сначала сравниваются года, если этого недостаточно, то месяцы и, затем, дни. Ниже приводится пример реализации этого способа. Однако тут тоже могут быть варианты.
type date = record year:integer; month:1..12; day:1..31; end; var d1, d2, dmy: date; begin with d1 do begin year := 1990; month := 5; day := 15 end; with d2 do begin year := 2005; month := 12; day := 25 end; write('Год: '); readln(dmy.year); write('Месяц: '); readln(dmy.month); write('День: '); readln(dmy.day); if (dmy.year > d1.year) and (dmy.year year) then writeln('Yes'); if dmy.year = d1.year then if dmy.month > d1.month then writeln('Yes') else if dmy.month = d1.month then if dmy.day > d1.day then writeln('Yes'); if dmy.year = d2.year then if dmy.month month then writeln('Yes') else if dmy.month = d2.month then if dmy.day day then writeln('Yes'); readln end.
Комментарии
Алгоритм для произвольного
Алгоритм для произвольного интервала неверный начиная со
Помогите найти ошибку
На вход программе подаются сведения об учениках, сдававших экзамен по информатике. Подаются в формате строки в виде Фамилия Имя №школы (число) баллы(число), например Валеева Гульназ 57 88. Нужно определить школу с самым высоким средним баллом, и вывести. Если таких школ несколько, то вывести только количество. У меня комп выводит только нули. Искала ошибку, но не нашла.
Вот программа