Нарисовал таблицу: по вертикали фамилии, по горизонтали - специальности. Начал вычеркивать: щапов куприянов - не пилоты, поэтому ставлю "-". Петров куприянов - не штурманы - тоже минусы. Щапов и сошин - не радисты- еще 2 минуса. Сигов и щапов - не синоптики - еще 2 минуса (ну вот тут конечно натяжка с сыном) . Петров и Щапов - не бортмеханики - еще 2 минуса. У щапова осталась одна клетка - штурман. Ставлю в нее крест, а остальным в колонке штурман - нули (ну можно тоже минусы) . Далее - куприянов и сигов - не синоптики - еще минусы (кстати - тут проверка натяжки по сыну в санатории) . У куприянова остается 2 клетки- радист и бортмеханик, но он - не радист, потому что занимается боксом, т. е. он - бортмеханик. ставим крест ему в бортмеханик и 0 - в клетку радист. Сошину и сигову - нули в клетку бортмеханик. Сигов - боксер, поэтому - не радист. Минус в клетку и у него остается только клетка пилот. Нули в клетку пилот петрову и сошину. В столбце радист осталась свободная клетка только у Петрова. Стало быть - сошин - синоптик
// Функция для определения из двух чисел минимальное function min(a, b: real): real; begin if (a > b) then min := b else min := a end;
// Функция для определения из двух чисел максимальное function max2(a, b: real): real; begin if (a > b) then max2 := a else max2 := b end;
// Функция для определения из трех чисел максимальное function max3(a, b, c: real): real; begin // Сначала определяем максимальное из первых двух чисел, // затем у нас останется два числа и нам остается определить // максимальное из них max3 := max2(max2(a, b), c); end;
var x, y, z, d, max_int: real; begin writeln('Введите 4 числа'); readln(x, y, z, d); max_int := max3(min(x, y), min(x, z), min(z, d)); writeln(max_int); end.