Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2022, 16:29   #1
nikitasa
 
Регистрация: 14.10.2022
Сообщений: 7
По умолчанию Вычислить используя функцию нахождения НОД (наибольшего общего делителя) для двух чисел?

Вычислить НОД(А,B)+НОД(С,В)+НОД(А,С), используя функцию нахождения НОД (наибольшего общего делителя) для двух чисел. Pascal
nikitasa вне форума Ответить с цитированием
Старый 26.11.2022, 12:47   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Код:
program dvojka;
var a,b,c,z: integer
//
function nod(arg1,arg2:integer): integer;
var x1,x2: integer ;
begin
   x1 := arg1;
   x2 := arg2;
   while (x1<>x2)  do
       if x1 > x2 then x1 := x1 - x2 else x2 := x2 - x1 ;
   nod := x1
end;
//
begin
  ReadLn(a,b,c);
  z := nod (a,b) + nod (a,c) + nod (b,c) ;
   WriteLn (z)
end.
Вроде так. Давненько не брал в руки Плескаль... Надеюсь, это - не а-бе-це ?)
-------------------
Ну и ?
-------------------
Поскольку ТСу это уже до фонаря - продолжим без него.
Подпрограмма nod работает только с положительными целыми. Если хотя бы один отриц. - циклится. Поэтому правильней было бы
Код:
   x1 := Abs(arg1);
   x2 := Abs(arg2)
Но и это ещё не всё. Если хотя бы один из аргументов 0 - тоже циклится.
Итоговый окончательный вид:
Код:
function nod(arg1,arg2:integer): integer;
var x1,x2: integer ;
begin
   x1 := Abs(arg1) ;
   x2 := Abs(arg2) ;
   if (x1 = 0) or (x2 = 0) then
        begin x1 := 1; x2 := 1 end ;
   while (x1<>x2)  do
       if x1 > x2 then x1 := x1 - x2 else x2 := x2 - x1 ;
   nod := x1
end;

Последний раз редактировалось digitalis; 27.11.2022 в 10:43.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
составить программу для нахождения наибольшего общего и наименьшего общего кратного двух натуральных чисел НОК(A,B)=A*B/НОД(A,B) sisaw Помощь студентам 0 06.05.2014 20:36
Нахождения наибольшего общего делителя в виде подпрограммы Тина37 Паскаль, Turbo Pascal, PascalABC.NET 1 04.03.2013 16:48
Написать функцию нахождения наибольший общий делителя двух натуральных чисел. DrDre9991 Помощь студентам 16 14.10.2010 12:41
Нахождение наибольшего общего делителяНахождение наибольшего общего делителя A_Orlov Паскаль, Turbo Pascal, PascalABC.NET 1 27.04.2010 16:53
Определить из наибольший общий делитель, используя функцию нахождения общего делителя. Igomax Помощь студентам 6 23.05.2009 19:41