• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль. Задача. Массивы. Подпрограммы. Процедуры

  • Автор темы Автор темы Notka
  • Дата начала Дата начала

Notka

Ученик
Регистрация
29 Янв 2012
Сообщения
2
Реакции
0
Баллы
0
Паскаль. Задача. Массивы. Подпрограммы. Процедуры

Даны n натуральных чисел. Найти их наибольший общий делитель, используя алгоритм Евклида, учитывая, что НОД(а,в,с)=НОД(а,в),с).
(Определить функцию для расчёта наибольшего общего делителя двух натуральных чисел, используя алгоритм Евклида)

Решить задачу, используя подпрограммы (процедуры).
 
помогите, пожалуйста!!!
 
помогите, пожалуйста!!!
Пожалуйста:
Код:
VAR
 D1,D2,GCD:Word;

Procedure Order(a,b:Word; var a1:Word; var b1:word);
Begin
 if a>b then
  begin
   a1:=a;
   b1:=b;
  end
 else
  begin
   a1:=b;
   b1:=a;
  end;
End;

Function Evklid(e1,e2:Word):Word;
Var
 m,c1,c2:Word;
Begin
 c1:=e1;
 c2:=e2;
 Repeat
  m:=c1 mod c2;
  c1:=c2;
  c2:=m;
 Until m=0;
 Evklid:=c1;
End;

BEGIN
 Write('First number: ');
 Readln(D1);
 Write('Second number: ');
 Readln(D2);
 Order(D1,D2,D1,D2);
 GCD:=Evklid(D1,D2);
 Writeln('Greatest Common Divisor = ',GCD);
 IF GCD>1 then
  Repeat
   D1:=GCD;
   Write('Next number (0 to quit): ');
   Readln(D2);
   If D2>0 then
    Begin
     Order(D1,D2,D1,D2);
     GCD:=Evklid(D1,D2);
     Writeln('Greatest Common Divisor = ',GCD);
    End;
  Until (D2=0) or (GCD=1);
 If GCD=1 then
  begin
   Writeln('Finished: GCD=1');
   Readln
  end;
END.
 
Назад
Сверху