Function NOD(a, b: longint): longint;
begin
while a <> b do
if a > b then a := a - b
else b := b - a;
NOD := a
end;
var
A, B, C: longint;
begin
Write('Введите три натуральных числа: '); Readln(A, B, C);
Writeln('НОД=', NOD(NOD(A, B), C))
end.
<em><u>Тестовое решение:</u></em>
Введите три натуральных числа: 256 48 24
НОД=8
if M[a, 4+1-a] < M[min, min]
then min := M[a, 4+1-a]
- у тебя в матрице рандомные числа максимум до 10, ты назначаешь их в min и max, а потом эти min и max пытаешься использовать как индексы.
Заведи отдельные переменные для сохранения индексов, например imin и imax и пользуйся ими, например как-то так:
for a := 1 to 4 do
if M[a, 4+1-a] < M[imin, imin]
then begin
min := M[a, 4+1-a];
imin := a;
end
По поводу параметра цикла не уверен, возможно в Pascal.ABC есть какие-то особенности по сравнению с обычным паскалем. Нашел вот такое:
"Описание параметра цикла for в заголовке цикла соблюдает принцип локальности: переменная описывается в том месте, где она впервые понадобилась
begin
for i: integer := 1 to 9 do
write(i,' ');
// Здесь переменная i не доступна!
for var i := 9 downto 1 do // описание с автоопределением типа
write(i,' ');
end."
Исходная программа была совершенно безумной, пришлось поправить.
program lab3;
label
loop,fin;
var
x,y:real;
begin
writeln('vvedite x'); readln(x);
loop:
if x>1 then goto fin;
if 1.5*x<1 then y:=1.5*x-ln(1.5*x)/ln(10)
else
if 1.5*x>1 then y:=1.5*x+ln(1.5*x)/ln(10)
else y:=1;
writeln('x=',x:0:1,', y=',y:5:3);
x:=x+0.1;
goto loop;
fin:
end.
Повтор...потому что круг замкнутый, квадрат и цикл тоже, а повтор не замкнутый