Помощь - Поиск - Пользователи - Календарь
Полная версия: Двумерный массив
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Jaxx
Дан двумерный квадратный массив. Найти номера строк, все элементы которых равны нулю. Использовать подпрограммы для решения каждой частной задачи.
Я так понимаю, что пользователь сам вводит элементы массива с клавиатуры, причем удобнее по строкам. Например, так:
Код

Введите 1-ю строку массива: 1 2 3 4 5
Введите 2-ю строку массива: 0 0 0 0 0
Введите n-ю строку массива: . . . . . .

Массив размером 5 на 5, больше не нужно
Lapp
Цитата(Jaxx @ 4.07.2007 12:06) *

Массив размером 5 на 5, больше не нужно

Ты покажи свои результаты для затравки... В чем сложности-то?
Jaxx
Проблема в том, как сделать ввод именно в том виде, в котором я привел его в примере. Остальное - сделаю сам
Lapp
Цитата(Jaxx @ 4.07.2007 14:24) *

Проблема в том, как сделать ввод именно в том виде, в котором я привел его в примере. Остальное - сделаю сам

Вот так примерно:
for i:=1 to n do begin
  Write('Введите ',i,'-ю строку массива: ');
  for j:=1 to n do Read(a[i,j]);
  ReadLn
end;
Jaxx
Получилось следующее:

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.


Поправьте, плиз, цикл вывода на экран номеров строк, заполненных нулями... А то выводятся по несколько раз подряд... И, может, еще где ошиПки есть, покажите
Jaxx
Поправил немного, ибо решение не соответствовало условию. Данная программа искала и выводила строки, где был хотя бы один 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.

volvo
Если б ты отформатировал код, как положено - сам увидел бы, что надо сначала пробежать по всей строке, а уж потом сравнивать значение переменной Stroka с N и предпринимать какие-то действия при равенстве...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.