При первом проходе программы
m=0
в цикле for сравниваем Если элемент массива под номером 1 (т.е. число 2) минус 2*m>1 то m равна текущему элементу массива.
т.к. 2-2*0=2 и это больше 0 то значение m становится равным 2
1 проход m=2
При втором проходе цикла фор сравниваем уже второй элемент массива, т.е.
Dat[2]-2*m>1
6-2*2>1
2>1
Условие выполняется значит значение m на 2 проходе равно 6
при дальнейших проходах цикла for мы больше не получим значений больше 1 т.к. текущее m=6, т.е. из элементов массива мы будем вычитать 12, т.е. ни одного положительного числа мы не получим, т.е. условие if не выполнится ни разу и значение m не изменится
ответ m=6
В n будем хранить количество чисел, которые ещё нужно вывести. a и b - предыдущее и текущее числа Фибоначчи. По определению, следующее число Фибоначчи равно сумме двух предыдущих, так что новое значение b будет a + b. Чтобы не заводить новую временную переменную, новое значение a можно будет найти, вычитая из нового b старое a, получится (a + b) - a = b.
Код процедуры:
procedure print_fib(n: integer);
var a, b, t: integer;
begin
a := 0;
b := 1;
while n > 0 do
begin
write(b, ' ');
b := a + b;
a := b - a;
n := n - 1;
end;
end;
Пример основной программы:
begin
print_fib(10)
end.
Вывод:
1 1 2 3 5 8 13 21 34 55
Поделитесь своими знаниями, ответьте на вопрос:
1)дан массив со случайными двузначными числами. найти количество элементов, у которых 1-я цифра больше 2-ой цифры. 2)дан массив со случайными двузначными числами. найти среднее арифметическое массива и обнулить все элементы меньше среднего. решить с !
2)const n=5; var a,b:array[1..n] of byte;sr,max,k,i:integer;beginwriteln('для изменения кол-ва чисел изменить в 1-ой строчке с 5на любое значение >2 ');for i:=1 to n do a[i]:=random(100);for i:=1 to n do b[i]:=a[i];for i:=1 to n do max:=max+a[i];sr:=max div n;writeln('начальный массив');for i:=1 to n do writeln(a[i]);write('сред арифм= ',sr);writeln;for i:=1 to n do if sr> b[i] then b[i]:=0;for i:=1 to n do writeln(b[i]);end.