const max=30;
var c:array[1..max,1..max] of integer;
m,n,i,j,p,k,s:integer;
begin
randomize;
repeat
write('Количество строк от 2 до ',max,' m=');
readln(m);
until m in [2..max];
repeat
write('Количество столбцов от 2 до ',max,' n=');
readln(n);
until n in [2..max];
writeln('Исходная матрица');
for i:=1 to m do
begin
for j:=1 to n do
begin
c[i,j]:=-10+random(21);
write(c[i,j]:4);
end;
writeln;
end;
write('P=');
readln(p);
k:=0;
for i:=1 to m do
begin
s:=0;
for j:=1 to n do
if c[i,j]>0 then s:=s+c[i,j];
if s>p then k:=k+1;
end;
write('Количество строк по условию=',k)
end.
Объяснение:
Объясняю почему:
Перед тобой цикл for. Строчка «for i in range(2,6)» означает, что цикл будет начинаться со второй итерации (шаг) до 6 (но в этом цикле такая фишка, что конечное число не учитывается, то есть будет 6-1 (5)). Значит с шагом 5 цикл оборвётся и 6 выполняться не будет. Ты можешь обнаружить это в таблице. Последнее твоё действие заканчивается на строчке под номером 5. А дальше все очень просто!
Допустим, в пустые клеточки (А1, В1) мы ввели какие-то числа. Например, А = 2, В = 3. Следующим шагом программы будет присвоить нашим переменным, которые мы задали, новые значения, которые считаются по формуле данной в строке 2:
2*A1+B1 (это для переменной А) и B1+1 (это для переменной B).
Значит теперь у нас:
A = 2*2(то число которое мы задали)+3 = 7
B = 3(то число которое мы задали)+1 = 4
А дальше программа просто повторяет все то же самое, только теперь с новыми значениями, у нас они стали: A = 7, B = 4. Надеюсь все понятно :) И именно ответ под номером один нам подходит.
Если ещё надо решить вторую задачу, то сфоткай полностью ответы.