Произведение минимальной и максимальной цифр - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Задача : Даны три целых положительных числа a, b и c. Найти в каж- дом числе произведение минимальной и максимальной цифр. Нужно сделать с помощью подпрограмм. Есть набросок программы,непонятно,что надо использовать функцию или процедуру,так и не понял в чем толком их различие. И даже если пытаться запустить программу в таком виде,выдает ошибку неверное число параметров функции.
Листинг программы
  1. program PROG;
  2. var
  3. a, b, c : integer;
  4. {функция MaxMin нахождения максимальной и минимальной цифры числа}
  5. {procedure} function MaxMin(var n, m, max, min : integer):integer;
  6. begin {MaxMin}
  7. max:=-10;
  8. min:=10;
  9. While n<>0 do
  10. begin
  11. m:=n mod 10;
  12. if m>max then
  13. max:=m;
  14. if m<min then
  15. min:=m;
  16. n:=n div 10;
  17. End;
  18. end;{MaxMin}
  19. function PROIZV(var n, mult: integer):integer;
  20. begin {PROIZ}
  21. mult := 1;
  22. while n > 0 do begin
  23. mult := mult * (n mod 10);
  24. n := n div 10
  25. end;
  26. end;{PROIZ}
  27. begin
  28. writeln('Введите 3 числа');
  29. readln(a, b, c);
  30. MaxMin(a, b, c);
  31.  
  32. writeln();
  33. end.

Решение задачи: «Произведение минимальной и максимальной цифр»

textual
Листинг программы
  1. //поскольку нужно получить 2 значения, лучше процедура, хотя можно и функцию,
  2. //но она будет по сути процедурой
  3. procedure MaxMin(n:integer; var max, min : byte);
  4. var m:byte;
  5. begin
  6. n:=abs(n);//вдруг число отрицательное
  7. max:=0;
  8. min:=9;
  9. While n<>0 do
  10.  begin
  11.   m:=n mod 10;
  12.   if  m>max then max:=m;
  13.   if  m<min then min:=m;
  14.   n:=n div 10;
  15.  End;
  16. end;
  17.  
  18. function Proizv(var a,b:byte):byte;
  19. begin
  20. Proizv:=a*b;
  21. end;
  22.  
  23. var a:integer;
  24.     i,mn,mx:byte;
  25. begin
  26. for i:=1 to 3 do
  27.  begin
  28.   write('Введите целое число a=');
  29.   readln(a);
  30.   MaxMin(a, mn, mx);
  31.   writeln('Произведение минимальной и максимальной цифр=',Proizv(mn,mx));
  32.  end;
  33. end.

Объяснение кода листинга программы

  1. Введен код на языке PascalABC.Net
  2. Объявлена процедура MaxMin(n:integer; var max, min : byte) для нахождения максимального и минимального значения цифр числа n
  3. В процедуре используется цикл while, который выполняется до тех пор, пока n не равно 0
  4. На каждой итерации цикла значение переменной m равно остатку от деления n на 10 (это последняя цифра числа n)
  5. Если значение m больше max, то max присваивается значение m
  6. Если значение m меньше min, то min присваивается значение m
  7. Значение n делится на 10 (удаляется последняя цифра числа n)
  8. Введен код функции Proizv(var a,b:byte):byte для умножения двух чисел
  9. В основной программе объявлены переменные a, i, mn, mx типа byte
  10. В цикле for, который выполняется 3 раза, пользователю предлагается ввести целое число a
  11. При вводе числа, вызывается процедура MaxMin(a, mn, mx), которая находит максимальное и минимальное значение цифр числа a
  12. Выводится произведение минимальной и максимальной цифр (значение функции Proizv(mn, mx))
  13. Цикл for выполняется 3 раза

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы