Приветствуем читателей нашего сайта! Сегодня мы с вами решим задачку, которую нам по форме обратной связи прислал Дмитрий.
Текст сообщения: «Помогите написать функцию, которая принимает 3 числа, наибольшее из них делит наименьшее и возвращает это значение».
Для решения задачи понадобится оператор деления с остатком
Немножко посовещавшись мы решили дать ей красивое название(наша традиция). В итоге мы пришли к консенсусу и нарекли нашу третью задачу от читателя «Остаток»!
Решается эта задача очень просто.
Итак, наш план действий:
1) Найти наименьшее и наибольшее значение из трех чисел.
2) Поделить наибольшее на наименьшее, используя оператор mod.
Со вторым пунктом нашего плана всё понятно. Одна строчка и готово. Но как же найти наименьшее и наибольшее? Эту задачу мы уже решали целых два раза. В первом случае мы применяли сложные логические условия(if14), во втором перестановки и процедуры(proc13).
Итак, можно приступать к решению задачи.
Первый способ решения задачи «Остаток».
program max_mod_min; var a, b, c, d: integer; function MaxD_mod_MinD(a, b, c: integer): integer; var min, max: integer; begin //код из if14 if (a > c) and (a > b) then max := a else if b > c then max := b else max := c; if (a < c) and (a < b) then min := a else if b < c then min := b else min := c; Result := max mod min; end; begin write('Введите три числа: '); readln(a, b, c); write('Наибольшее число, деленное mod на наименьшее: ', MaxD_mod_MinD(a, b, c)) end.
Второй способ решения задачи «Остаток».
program max_mod_min; var a, b, c: integer; //Код из proc13 //Обменивает значение двух переменных procedure Swap(var x, y: integer);//var есть. Мы связываем значение переменных. //Все, что происходит с локальными x, y происходит и с глобальными x, y var tmp: integer; begin tmp := x; x := y; y := tmp; end; //Перемещает наибольшее значение в переменную x procedure MaxMin(var x, y: integer); begin if x < y then Swap(x, y) end; //Сортирует по убыванию procedure SortDec3(var x, y, z: integer); begin MaxMin(y, z); MaxMin(x, y); MaxMin(y, z); end; function MaxD_mod_MinD(a, b, c: integer): integer;//var нет. Мы не привязываем //значение глобальных переменных к значениям локальных. begin SortDec3(a, b, c); //Сортируем по убыванию Result := a mod c; //Теперь в а - наибольшее, а в с - наименьшее. end; begin write('Введите три числа: '); readln(a, b, c); write('Наибольшее число, деленное mod на наименьшее: ', MaxD_mod_MinD(a, b, c)) end.
Ну вроде бы всё. если у вас остались какие-то вопросы, задавайте их в комментариях. Я постараюсь на них ответить. И не забывайте нажимать на кнопочки и рассказывать о нас всему миру!
P.S. Вы, наверное, заметили, что сегодня у меня было очень хорошее настроение и позитивный настрой! А знаете почему? Потому что мы на отдыхе. Именно поэтому на нашем сайте не появлялось ничего новенького уже больше месяца. Но с сентября, когда закончатся затянувшиеся летние каникулы, и вновь над нашими светлыми головами сгустятся тучи повседневности и учёбы, мы снова начнем наполнять этот сайт скучными интересными уроками и решениями однообразных разнообразных задач.