Дан двумерный квадратный массив. Найти номера строк, все элементы которых равны нулю. Использовать подпрограммы для решения каждой частной задачи.
Я так понимаю, что пользователь сам вводит элементы массива с клавиатуры, причем удобнее по строкам. Например, так:
Проблема в том, как сделать ввод именно в том виде, в котором я привел его в примере. Остальное - сделаю сам
for i:=1 to n do begin
Write('Введите ',i,'-ю строку массива: ');
for j:=1 to n do Read(a[i,j]);
ReadLn
end;
Получилось следующее:
Uses crt;
const
n=5;
var
arr:array[1..n,1..n] of integer;
i,j:integer;
procedure fill;
var
i,j:integer;
begin
for i:=1 to n do begin
write('vvedite ',i,'-yu stroku massiva: ');
for j:=1 to n do read(arr[i,j]);
readln
end;
end;
procedure find;
var
i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
begin
if arr[i,j]=0 then writeln('0 v stroke: ',i);
end;
end;
begin
clrscr;
fill;
find;
readln;
end.
Поправил немного, ибо решение не соответствовало условию. Данная программа искала и выводила строки, где был хотя бы один 0. А по условию нужно вывести номера строк, где все элементы равны нулю.
Вроде нормальный вариант, но перепроверьте:
Uses crt;
const
n=5;
var
arr:array[1..n,1..n] of integer;
i,j:integer;
procedure fill;
var
i,j:integer;
begin
for i:=1 to n do begin
write('vvedite ',i,'-yu stroku massiva: ');
for j:=1 to n do read(arr[i,j]);
readln
end;
end;
procedure find;
var
i,j, stroka,stroka2:integer;
begin
stroka2:=0;
for i:=1 to n do
begin
stroka:=0;
for j:=1 to n do
begin
if arr[i,j]=0 then
begin
stroka:=stroka+1;
if stroka=n then
begin
stroka2:=1;
writeln('0 v stroke: ',i);
end;
end;
end;
end;
if stroka2=0 then writeln('v massive net takih strok');
end;
begin
clrscr;
fill;
find;
readln;
end.
Если б ты отформатировал код, как положено - сам увидел бы, что надо сначала пробежать по всей строке, а уж потом сравнивать значение переменной Stroka с N и предпринимать какие-то действия при равенстве...