Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Ошибка в программе.

Автор: Casual 21.04.2008 20:14

Задача: найти наибольший общий делитель целых положительных чисел 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.


Автор: renesko1 21.04.2008 20:33

Если хочешь то можешь организовать , наверное, цикл от самого маленьког числа вниз и прверять
подходит ли счетчик на роль делителя или нет.(по остаткам)
Конечно если не хочешь use поиском.
ps
Скорее всего не прокатит но все же.

Автор: klem4 21.04.2008 22:28

смысл задачи в том, чтобы написать функцию для нахождения НОД 2-х чисел (например http://forum.pascal.net.ru/index.php?showtopic=10805&hl=#) и использовать ее для 3-х


writeln(GCD(GCD(a, b), c));


Автор: Casual 23.04.2008 9:20

Кого не затруднит, напишите, полалуйста, как это будет выглядеть?
Вот программа для 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.


Автор: Bard 23.04.2008 14:19

Цитата
Кого не затруднит, напишите, полалуйста, как это будет выглядеть?

Mеня smile.gif ... Вот тебе программа вычисляющая НОД 3-х чисел lol.gif ...
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.


Автор: Casual 23.04.2008 18:23

Ну вот, смогли же! smile.gif Чем являются x и y в процедуре?

Автор: Гость 23.04.2008 18:41

Переменные на локальном уровне..в этом смысл процедуры

Автор: volvo 23.04.2008 18:52

Цитата
Переменные на локальном уровне
Может, все-таки параметры-переменные (они же Var-параметры)? Кстати, а в чем смысл:
1) описания a, b, c перед процедурой;
2) использования процедур вместо функций
?

Это чтоб больше написать, и программа солиднее казалась? Вообще-то с функцией (ссылка в третьем посте) решение - в одну строку (решение приведено там же, в посте №3)...