Общий знаменатель для случайного массива чисел - Pascal
Формулировка задачи:
Условие: программа создает массив случайных чисел, в массиве n чисел. Программа должна найти общий наибольший знаменатель для всех n чисел и вывести его на экран. Вот моя программа и ее проблема в том, что она не работает жирным выделил свое подозрение на ошибку, но я не знаю точно уже
Решение задачи: «Общий знаменатель для случайного массива чисел»
textual
Листинг программы
const n=3;
var M:array[1..n] of integer;
i,d,s,j:integer;
cond:boolean;
Begin
randomize;
for i:=1 to n do
M[i]:=1+random(10);
d:=n;
repeat
cond:=false;
for i:=1 to d-1 do
if M[i]>M[i+1] then
begin
s:=M[i+1];
M[i+1]:=M[i];
M[i]:=s;
cond:=true;
end;
dec(d)
until Not cond;
for i:=1 to n do
write(M[i], ' ');
cond:=true;
for i:=M[n] to High(integer) do
Begin
cond:=true;
for j := 1 to N do
Begin
if i mod M[j] <> 0 then
Begin
cond:=false;
break
End;
End;
if cond then
Begin
d:=i;
break
End;
End;
writeln;
write(d);
End.
Объяснение кода листинга программы
- Объявляются переменные: n (количество чисел в массиве), M (массив для хранения чисел), i, d, s, j (циклические переменные для работы с массивом и нахождения общего знаменателя), cond (флаг для проверки условий).
- Инициализируется генератор случайных чисел.
- Заполняется массив M случайными числами.
- Находится общее количество чисел в массиве (d).
- В цикле повторяется до тех пор, пока массив не будет отсортирован по возрастанию. Если элементы не отсортированы, то меняется местами текущий элемент с предыдущим, чтобы получить возрастающий порядок.
- В цикле проверяется, делится ли текущее число (i) на любое число из массива без остатка. Если делится, то число i считается общим знаменателем и сохраняется в переменной d.
- Выводится на экран массив M и общий знаменатель d.