Граждане информатики, прошу помощи. Pascal ABC.
5-9 класс
|
Что не так в коде? Надо найти НОК трёх чисел через алгоритм Евклида.
Тест: числа 4,6,18, ответ 36.
Код:
Program No4;
var a,b,c:integer;
{----------АЛГОРИТМ ЕВКЛИДА----------}
function evc (a,b:integer):integer;
var m,m1,m2,z:integer;
begin
z:=0;
//определение большего числа
if a=b then evc:=a else
begin
if a>b then
begin
///m1 - большее число из двух, m2 - меньшее.
m1:=a;
m2:=b;
end
else
begin
m1:=b;
m2:=a;
end;
//определение большего числа - готово
repeat
m:=m1 mod m2; ///Большее число делим на меньшее;
if m=0 then z:=m2 ///Если делится - то НОД есть меньшее число;
else begin ///Иначе меняем большее на меньшее,а меньшее - на остаток от деления (по Евклиду).
m1:=m2;
m2:=m;
end
until z<>0;///Повторяем, пока НОД не появится.
evc:=z;
end;
end;
{---------/АЛГОРИТМ ЕВКЛИДА----------}
{----------АЛГОРИТМ НОК----------}
function znam (a, b, c:integer):integer;
var Nabc,Nab:integer;
begin
Nab:=evc (a,b); ///НОД (а.b) - это результат алгоритма Евклида для чисел А и B:
Nabc:=evc (c, Nab); ///НОД (С,Nab) - это результат алгоритма Евклида для чисел С и Nab:
znam:=a*b*c div Nabc; ///НОК = ПРОИЗВ. ЧИСЕЛ / НОД
end;
{----------АЛГОРИТМ НОК----------}
begin
readln (a,b,c);
writeln (znam (a,b,c));
end.
Заранее спасибо.
найти ошибку не могу но я заметил что твоя программа работает правильно если вводить 1 2 3; 3 4 5; 5 6 7 и тд.если вводить 2 3 4 ; 4 5 6 и тд то ответ будет больше реального в 2 раза и тд и тп. Вроде в программе всё правильно ошибка скорее всего находится в вычислении НОК а в этом увы мой мозг уже те не помошник но надеюсь моя находка вам чем-нибудь да поможет.
что проверка пишет?
у тебя что-то не так с проверкой
ты уверен что правильно написал алгоритм(просто я сам его не шибко знаю
Случаи с одинаковыми числами я не разбирал, это самое простое. Ошибка была во втором алгоритме, я уже разобрался и справил.Спасибо за желание помочь :)
Другие вопросы из категории
Читайте также
Составить программу,которая выводит на экран сумму нечетных чисел от 1 до 30 в Pascal ABC.
2) дано четырёхзначное число. Что больше: произведение цифр числа или их утроенная сумма. pascal ABC
Есть ли такие команды с умножением и делением?
Условия:
Заполнить двумерный массив A случайными числами и построить одномерный массив B,в каждый елемент которого записано:
число елементов каждого стольбца двухмерного массива,значения которых равны заданному значению.
Вопросы вот где " и построить одномерный массив B,в каждый елемент которого записано:
число елементов каждого стольбца двухмерного массива,значения которых равны заданному значению." как это построить? У меня в голове нету абсолютно никаких мыслей.Очень прошу помочь.