Помощь - Поиск - Пользователи - Календарь
Полная версия: Ошибка в программе.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Casual
Задача: найти наибольший общий делитель целых положительных чисел 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
Если хочешь то можешь организовать , наверное, цикл от самого маленьког числа вниз и прверять
подходит ли счетчик на роль делителя или нет.(по остаткам)
Конечно если не хочешь use поиском.
ps
Скорее всего не прокатит но все же.
klem4
смысл задачи в том, чтобы написать функцию для нахождения НОД 2-х чисел (например так) и использовать ее для 3-х


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

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

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
Ну вот, смогли же! smile.gif Чем являются x и y в процедуре?
Гость
Переменные на локальном уровне..в этом смысл процедуры
volvo
Цитата
Переменные на локальном уровне
Может, все-таки параметры-переменные (они же Var-параметры)? Кстати, а в чем смысл:
1) описания a, b, c перед процедурой;
2) использования процедур вместо функций
?

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