Для вычислений длительностей интервалов дат в Excel есть функция РАЗНДАТ(), в английской версии - DATEDIF().Нюанс в том, что Вы не найдете эту функцию в списке Мастера функций, нажав кнопку fx - она является недокументированной возможностью Excel. Точнее говоря, найти описание этой функции и ее аргументов можно только в полной версии англоязычной справки, поскольку на самом деле она оставлена для совместимости со старыми версиями Excel и Lotus 1-2-3. Однако, несмотря на то, что эту функцию не получится вставить стандартным через окно Вставка - Функция (Insert - Function), ее можно вручную вписать в ячейку с клавиатуры - и она сработает!Синтаксис функции следующий:РАЗНДАТ(начальная_дата; конечная_дата измерения)Самый интересный аргумент, конечно, последний. Он определяет, каким именно образом и в каких единицах будет измеряться интервал между начальной и конечной датами. Этот параметр может принимать следующие значения:"y"разница в полных годах "m"в полных месяцах"d"в полных днях"yd"разница в днях с начала года без учета лет"md"разница в днях без учета месяцев и лет"ym"разница в полных месяцах без учета летТ.е. при желании подсчитать и вывести, например, ваш стаж в виде "3 г. 4 мес. 12 дн.", необходимо ввести в ячейку следующую формулу:=РАЗНДАТ(A1;A2;"y")&" г. "&РАЗНДАТ(A1;A2;"ym")&" мес. "&РАЗНДАТ(A1;A2;"md")&" дн."или в английской версии Excel:=DATEDIF(A1;A2;"y")&" y. "&DATEDIF(A1;A2;"ym")&" m. "&DATEDIF(A1;A2;"md")&" d."где А1 - ячейка с датой поступления на работу, А2 - с датой увольнения.
Program raf105;
type Info = record
family: string;
year: integer;
Score: record
exam1: byte;
exam2: byte;
exam3: byte;
end;
end;
const
n = 3; // Количество студентов
var
Students: array[1..n] of Info;
i, goodStud, badStud, students1989Count, students1989ScoreSum: integer;
midScore1989: real;
begin
writeln('Введите информацию о ',n,' студентах');
for i:=1 to n do
begin
writeln(' Студент ',i);
write('Фамилия: ');
readln(Students[i].family);
write('Год рождения: ');
readln(Students[i].year);
writeln('Введите информацию о его оценках (от 1 до 5)');
write('Оценка за 1 экзамен: ');
readln(Students[i].Score.exam1);
write('Оценка за 2 экзамен: ');
readln(Students[i].Score.exam2);
write('Оценка за 3 экзамен: ');
readln(Students[i].Score.exam3);
if Students[i].year <= 1989 then
begin
students1989Count:= students1989Count + 3;
students1989ScoreSum:= students1989ScoreSum + Students[i].Score.exam1 + Students[i].Score.exam2 + Students[i].Score.exam3;
end;
if (Students[i].Score.exam1 = 5) and (Students[i].Score.exam2 = 5) and (Students[i].Score.exam3 = 5) then
inc(goodStud);
if (Students[i].Score.exam1 <= 2) or (Students[i].Score.exam2 <= 2) or (Students[i].Score.exam3 <= 2) then
inc(badStud);
end;
midScore1989:= students1989ScoreSum / students1989Count;
writeln;
writeln('Средний студентов 1989 года рождения и старше: ',midScore1989:3:1);
writeln('Количество отличников: ',goodStud);
writeln('Количество задолжников: ',badStud);
end.
PascalABC