Произведение минимальной и максимальной цифр - PascalABC.NET
Формулировка задачи:
Задача : Даны три целых положительных числа a, b и c. Найти в каж-
дом числе произведение минимальной и максимальной цифр.
Нужно сделать с помощью подпрограмм.
Есть набросок программы,непонятно,что надо использовать функцию или процедуру,так и не понял в чем толком их различие.
И даже если пытаться запустить программу в таком виде,выдает ошибку неверное число параметров функции.
Листинг программы
- program PROG;
- var
- a, b, c : integer;
- {функция MaxMin нахождения максимальной и минимальной цифры числа}
- {procedure} function MaxMin(var n, m, max, min : integer):integer;
- begin {MaxMin}
- max:=-10;
- min:=10;
- While n<>0 do
- begin
- m:=n mod 10;
- if m>max then
- max:=m;
- if m<min then
- min:=m;
- n:=n div 10;
- End;
- end;{MaxMin}
- function PROIZV(var n, mult: integer):integer;
- begin {PROIZ}
- mult := 1;
- while n > 0 do begin
- mult := mult * (n mod 10);
- n := n div 10
- end;
- end;{PROIZ}
- begin
- writeln('Введите 3 числа');
- readln(a, b, c);
- MaxMin(a, b, c);
- writeln();
- end.
Решение задачи: «Произведение минимальной и максимальной цифр»
textual
Листинг программы
- //поскольку нужно получить 2 значения, лучше процедура, хотя можно и функцию,
- //но она будет по сути процедурой
- procedure MaxMin(n:integer; var max, min : byte);
- var m:byte;
- begin
- n:=abs(n);//вдруг число отрицательное
- max:=0;
- min:=9;
- While n<>0 do
- begin
- m:=n mod 10;
- if m>max then max:=m;
- if m<min then min:=m;
- n:=n div 10;
- End;
- end;
- function Proizv(var a,b:byte):byte;
- begin
- Proizv:=a*b;
- end;
- var a:integer;
- i,mn,mx:byte;
- begin
- for i:=1 to 3 do
- begin
- write('Введите целое число a=');
- readln(a);
- MaxMin(a, mn, mx);
- writeln('Произведение минимальной и максимальной цифр=',Proizv(mn,mx));
- end;
- end.
Объяснение кода листинга программы
- Введен код на языке PascalABC.Net
- Объявлена процедура MaxMin(n:integer; var max, min : byte) для нахождения максимального и минимального значения цифр числа n
- В процедуре используется цикл while, который выполняется до тех пор, пока n не равно 0
- На каждой итерации цикла значение переменной m равно остатку от деления n на 10 (это последняя цифра числа n)
- Если значение m больше max, то max присваивается значение m
- Если значение m меньше min, то min присваивается значение m
- Значение n делится на 10 (удаляется последняя цифра числа n)
- Введен код функции Proizv(var a,b:byte):byte для умножения двух чисел
- В основной программе объявлены переменные a, i, mn, mx типа byte
- В цикле for, который выполняется 3 раза, пользователю предлагается ввести целое число a
- При вводе числа, вызывается процедура MaxMin(a, mn, mx), которая находит максимальное и минимальное значение цифр числа a
- Выводится произведение минимальной и максимальной цифр (значение функции Proizv(mn, mx))
- Цикл for выполняется 3 раза
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д