Задача: найти наибольший общий делитель целых положительных чисел a, b, c.
p.s. знаю, что решалось, но все же нужна помощь. Работать в Паскале только начал.
Program NOD;
var a, b, c:integer;
begin
writeln('vvedite 3 chisla');
readln(a, b, c);
repeat if a>b then a:=a mod b
else b:=b mod a
until (a=0) or (b=0);
repeat if c>a then c:=c mod a
until (c=0) or (a=0);
repeat if c>b then c:=c mod b
until (c=0) or (b=0);
writeln('NOD=', a+b+c);
readln;
end.
Если хочешь то можешь организовать , наверное, цикл от самого маленьког числа вниз и прверять
подходит ли счетчик на роль делителя или нет.(по остаткам)
Конечно если не хочешь use поиском.
ps
Скорее всего не прокатит но все же.
смысл задачи в том, чтобы написать функцию для нахождения НОД 2-х чисел (например http://forum.pascal.net.ru/index.php?showtopic=10805&hl=#) и использовать ее для 3-х
writeln(GCD(GCD(a, b), c));
Кого не затруднит, напишите, полалуйста, как это будет выглядеть?
Вот программа для 2-х чисел:
Program NOD;
var a, b:integer;
begin
writeln('vvedite 2 chisla');
readln(a, b);
repeat if a>b then a:=a mod b
else b:=b mod a
until (a=0) or (b=0);
writeln('NOD=', a+b);
readln;
end.
Program NOD;
var a, b, c:integer;
procedure gcd(var x,y:integer);
begin
repeat
if x>y then x:=x mod y
else y:=y mod x
until (x=0) or (y=0);
end;
begin
writeln('vvedite 3 chisla'); readln(a, b, c);
gcd(a,b); a:=a+b; b:=c; gcd(a,b);
writeln('NOD=', a+b);
readln;
end.
Ну вот, смогли же! Чем являются x и y в процедуре?
Переменные на локальном уровне..в этом смысл процедуры