Delphi 7. Найти наибольший общий делитель и наименьшее общее кратное.

Общие вопросы: версии и диалекты, синтаксис языка, cтруктуры и типы данных (массивы, строки, списки...), обработка данных и т.д.
Ответить
Nowexon
Сообщения: 1
Зарегистрирован: 13 июн 2013, 00:47

13 июн 2013, 00:58

Доброй ночи. Написал код нахождения наибольшего общего делителя (нод) для трех чисел, программа работает, но неправильно рассчитывает этот наибольший общий делитель.
Основной смысл:
1.Вводятся три переменные.
2.Берутся первые две переменные, и считается их нод.
3.Затем берется третья переменная и получившийся нод [ноду присваивается переменная (для простоты работы)], и считается второй нод.
4.Вывод второго нод'а

Сам код:

procedure TForm3.Button1Click(Sender: TObject); // кнопка

function NOD(a, b:integer):integer; // 1ая Функция нахождения наибольшего общего делителя
begin
If a<>0 then NOD:= NOD(b mod a,a) else NOD:= b;
End;

function NOD1(d, k:integer): integer; // 2ая Функция нахождения наибольшего общего делителя
begin
If d<>0 then NOD1:= NOD1(k mod d,d) else NOD1:= k;
End;

Var
a,b,d,k: integer;

begin
k:= NOD(a,b); // присвоение переменной k функцию нахождения общего делителя 1
a:= strtoint(Edit1.Text); // переменная "a" задается пользователем через поле edit1
b:= strtoint(Edit2.Text); // переменная "b" задается пользователем через поле edit2
d:= strtoint(Edit3.Text);// переменная "d" задается пользователем через поле edit3
Edit4.text:= Inttostr(NOD1(d,k)); // Вывод наибольшего общего делителя
end;
end.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

13 июн 2013, 09:21

Потому что нод считается до того, как переменные введены
It's a long way to the top if you wanna rock'n'roll
Ответить