
Приветствуем читателей нашего сайта! Сегодня мы с вами решим задачку, которую нам по форме обратной связи прислал Дмитрий.
Текст сообщения: «Помогите написать функцию, которая принимает 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. Вы, наверное, заметили, что сегодня у меня было очень хорошее настроение и позитивный настрой! А знаете почему? Потому что мы на отдыхе. Именно поэтому на нашем сайте не появлялось ничего новенького уже больше месяца. Но с сентября, когда закончатся затянувшиеся летние каникулы, и вновь над нашими светлыми головами сгустятся тучи повседневности и учёбы, мы снова начнем наполнять этот сайт скучными интересными уроками и решениями однообразных разнообразных задач.