• Предмет: Информатика
  • Автор: idyvcybersport
  • Вопрос задан 1 год назад

Напишите процедуру для нахождения наибольшего общего делителя двух чисел.Используйте ее для нахождения наибольшего общего делителя элементов 3х массивов. Массивы ввести и вывести при помощи процедур


shpaler2k16: На c++ пойдет?
idyvcybersport: только паскаль
BobbyFresnel: "Массивы ввести и вывести при помощи процедур" - а если они встроены в Паскаль?
BobbyFresnel: И потом, для каждого массива свой НОД или один общий на все-все?

Ответы

Ответ дал: BobbyFresnel
1

function Nod(a, b: integer): integer;

begin

 while b <> 0 do

 begin

   a := a mod b;

   Swap(a, b)

 end;

 Result := a

end;

procedure ArrIn(var a: array of integer) := a := ReadArrInteger(a.Length);

procedure ArrOut(a: array of integer) := a.Println;

function NodArr(a: array of integer): integer;

begin

 var n := a.Length;

 if n = 1 then

   Result := a[0]

 else

 begin

   Result := Nod(a[0], a[1]);

   for var i := 2 to n - 1 do

     Result := Nod(a[i], Result);

 end;

end;

begin

 var n := ReadInteger('Число элементов в массиве 1:');

 var a := new integer[n];

 Writeln('Введите элементы массива 1');

 ArrIn(a);

 Writeln('введены элементы:');

 ArrOut(a);

 Writeln('НОД элементов равен ', NodArr(a));

 n := ReadInteger('Число элементов в массиве 2:');

 SetLength(a, n);

 Writeln('Введите элементы массива 2');

 ArrIn(a);

 Writeln('введены элементы:');

 ArrOut(a);

 Writeln('НОД элементов равен ', NodArr(a));

 n := ReadInteger('Число элементов в массиве 3:');

 SetLength(a, n);

 Writeln('Введите элементы массива 3');

 ArrIn(a);

 Writeln('введены элементы:');

 ArrOut(a);

 Writeln('НОД элементов равен ', NodArr(a));

end.

Вас заинтересует