{http://forum.pascalnet.ru/index.php?showtopic=28956} {Решал быстро, так что извиняйте за длинный код ;-)} {Надеюсь, задание понял правильно!} {PascalABC.NET 1.8} var b,m:array [1..5,1..8] of integer; st:array [1..5] of integer; i,j,k,n,min,p,nul:integer; ll:boolean; begin randomize; {Матрица исходная, случайно заполненная - создаём} for i:=1 to 5 do for j:=1 to 8 do b[i,j]:=random(141)+10; {Матрица-маска - создаём} for i:=1 to 5 do for j:=1 to 8 do //if (i=2) or (i=4) then m[i,j]:=random(1) else {Если раскомментировать (удалить //), создаёт гарантированные строки №2 и №4 со всеми нулями} m[i,j]:=random(2); {Выводим матрицу исходную} for i:=1 to 5 do begin for j:=1 to 8 do write(b[i,j]:5); writeln; end; writeln; {Выводим матрицу-маску} for i:=1 to 5 do begin for j:=1 to 8 do write(m[i,j]:5); writeln; end; {Количество нулей в каждой строке матрицы-маски - подсчёт необходимо для того, чтобы посчитать количество нулей в каждой строке. Если вся строка заполнена нулями, позже мы её исключим из рассмотрения на наличие минимального элемента} for i:=1 to 5 do begin k:=0; for j:=1 to 8 do if m[i,j]=0 then k:=k+1; st[i]:=k; end; {Две следующие строки просто для проверки вывода, правильно ли подсчитаны нули, их можно удалить} //for i:=1 to 5 do //writeln('В ',i,'-ой строке ',st[i],' нулей'); writeln; {Собственно поиск минимального по матрице-маске} for i:=1 to 5 do if st[i]<>8 then begin k:=1; while (m[i,k]<>1) and (k<=8) do k:=k+1; p:=k; //writeln(p:5); min:=b[i,p]; for j:=p+1 to 8 do if (b[i,j]