Думаю нет большой разницы между процедурой и функцией, просто функция куда удобнее. Для нахождения нода используется алгоритм Эвклида
//PascalABC.Net
function NOD(A, B: integer): integer; begin while A <> B do if A > B then A := A - B else B := B - A; NOD := A; end;
procedure pNOD(A, B: integer; var NOD: integer); begin while A <> B do if A > B then A := A - B else B := B - A; NOD := A; end;
begin var a: Array of integer := (16, 32, 40, 64, 80, 128); var n := a[low(a)]; for var i := low(a) to high(a) do pNOD(n, a[i], n);
Writeln(n); end.
Vera-zero281
26.11.2021
В состав алфавита языка Паскаль входит: Символы для составления переменных- латинские(строчные, прописные) символ "_" цифры (0..9) Символы разделители (пробельные символы) Составные символы - особенная группа символов, которая воспринимаются компилятором как один символ "<=", ":=",">=", "..", "//" "<>" "(*" "*)" Зарезервированные слова- слова, несущие определенное смысловое значение для компилятора Спец-символы- символы, которые предназначены для построения конструкций языка, в Паскале это: ' - + / * : ; = { } [ ] ( ) $ и т.п
Для нахождения нода используется алгоритм Эвклида
//PascalABC.Net
function NOD(A, B: integer): integer;
begin
while A <> B do
if A > B then A := A - B else B := B - A;
NOD := A;
end;
procedure pNOD(A, B: integer; var NOD: integer);
begin
while A <> B do
if A > B then A := A - B else B := B - A;
NOD := A;
end;
begin
var a: Array of integer := (16, 32, 40, 64, 80, 128);
var n := a[low(a)];
for var i := low(a) to high(a) do
pNOD(n, a[i], n);
Writeln(n);
end.