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

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

Форум «Всё о Паскале» _ Задачи _ подпрограммы

Автор: zinvor 19.03.2010 19:52

Помогите написать программу определяющий нод (наибольший общий делитель)4 натуральных чисел! smile.gif

Автор: Himka 19.03.2010 22:04

Цитата(zinvor @ 19.03.2010 15:52) *

Помогите написать программу определяющий нод (наибольший общий делитель)4 натуральных чисел! smile.gif

Как-то так:

var
NOD: integer;
NATDIG: array[1..4] of integer;
I: integer;
F: boolean;
BUF: integer;

begin
for I:=1 to 4 do
begin
write(I, '-e chislo: ');
readln(NATDIG[I]);
end;
F:=True;
while F do
begin
F:=False;
for I:=1 to 3 do
if NATDIG[I]>NATDIG[I+1] then
begin
F:=true;
BUF:=NATDIG[I];
NATDIG[I]:=NATDIG[I+1];
NATDIG[I+1]:=BUF;
end;
end;
NOD:=1;
for I:=2 to NATDIG[1] do
if ((NATDIG[1] mod I)=0) AND ((NATDIG[2] mod I)=0) AND ((NATDIG[3] mod I)=0)
AND ((NATDIG[4] mod I)=0) then NOD:=I;
writeln('MAX NOD = ', NOD);
readln;
end.




М
Himka, ставь правильные тэги, пожалуйста (правила раздела вверху страницы, п.2)
Исправлено.
Lapp


Автор: volvo 19.03.2010 23:43

НОД для N чисел элементарно считается через подпрограмму, вычисляющую НОД двух чисел (для двух - делается вообще элементарно. Попробуй написать функцию самостоятельно):

Res := arr[1];
for i := 2 to n do
Res := NOD(Res, arr[i]);

в Res имеем наибольший общий делитель всех чисел в массиве, не надо никаких ужасных условий...

Автор: zinvor 20.03.2010 1:33

спасибо!