Номер §1.2 ПМ 1

ГДЗ по информатике 9 класс, Босова 2023, страница 26

§. ПМ Процедура НОД на Паскале

Выполните приведённую выше программу в среде программирования PascalABC.NET. Протестируйте программу на последовательности из пяти чисел: 16, 32, 40, 80 и 128. Верно ли работает программа?

Приведённая программа:

var
  i, k, x, y, z: integer;
procedure nod(a, b: integer; var c: integer);
begin
  while a <> b do
    if a > b then a := a - b else b := b - a;
  c := a
end;
begin
  read(k);
  read(x);
  for i := 2 to k do
  begin
    read(y);
    nod(x, y, z);
    x := z
  end;
  writeln('НОД=', x)
end.
Решение

Сначала программа считывает и . Затем для каждого следующего числа вызывает процедуру nod(x,y,z). Процедура вычитает меньшее число из большего, пока они не станут равными; равное значение записывается в . После вызова оператор x := z сохраняет НОД уже прочитанной части последовательности.

Шаг Новое Входные Вычитания до равенства Новый
,
, ; ;
, ; далее вычитаем ещё раз до
, вычитаем пятнадцать раз до

Для запуска в PascalABC.NET вводим сначала количество чисел , затем . Программа выводит НОД=. Проверка по определению НОД: , , , , , то есть — общий делитель; больший общий делитель невозможен уже для и , поскольку их НОД равен .

Программа работает верно для этой положительной последовательности. В коде процедуры предполагаются натуральные входные числа: при нуле цикл вычитаний мог бы не завершиться.

Ответ

Пример запуска: ввод и ; вывод НОД=. Для данных чисел программа работает верно.

Помогло?

Нет твоего задания?Сфоткай, и ДЗмэн решит за пару секунд.

Решить по фото