Двумерный массив. Удалить строки без 0 элемента - Pascal ABC
Формулировка задачи:
Дан массив B(n*m).Элементы массива ввести в программе.Удалить все строки, в которых нет нулевого элемента.
двумерн массив
Написал на паскале.нет, не приняли, сказали сделать проще
Решение задачи: «Двумерный массив. Удалить строки без 0 элемента»
textual
Листинг программы
procedure DeleteRow(var a:array[,] of integer; r:integer); begin var rows:=a.GetLength(0); var cols:=a.GetLength(1); for var i:=r to rows-2 do for var j:=0 to cols-1 do a[i,j]:=a[i+1,j]; SetLength(a,rows-1,cols) end; begin var b:array[,] of integer:=((1,2,3,0),(5,6,0,8), (9,10,11,12),(13,0,15,16),(17,18,19,20)); Writeln('Исходный массив: ',b); var n:=b.GetLength(0); var m:=b.GetLength(1); for var i:=n-1 downto 0 do begin var FoundZero:=False; for var j:=0 to m-1 do if b[i,j]=0 then begin FoundZero:=True; Break end; if not FoundZero then DeleteRow(b,i) end; Writeln('Результирующий массив: ',b); end.
Объяснение кода листинга программы
- Создается процедура
DeleteRow
, которая принимает в качестве параметров двумерный массивa
и номер строкиr
. - В процедуре сначала определяется количество строк и столбцов в массиве
a
. - Затем происходит перебор всех строк массива от
r
доrows-2
, гдеrows
- количество строк в массиве. - Для каждой строки происходит перебор всех столбцов массива от
0
доcols-1
. - Если значение в текущей ячейке строки и столбца равно 0, то значение этой ячейки заменяется значением следующей ячейки в той же строке и столбце.
- После завершения цикла, функция
SetLength
используется для уменьшения количества строк в массивеa
на 1. - В основной части программы создается двумерный массив
b
, содержащий некоторые начальные значения. - Затем определяется переменная
n
, которая хранит количество строк в массивеb
. - Далее происходит перебор всех строк массива
b
отn-1
до0
. - Внутри цикла проверяется, есть ли в текущей строке хотя бы одна ячейка со значением 0.
- Если условие выполняется, то вызывается процедура
DeleteRow
с аргументамиb
иi
, гдеi
- номер текущей строки. - После завершения цикла, выводится исходный массив
b
и результирующий массивb
, который получается после удаления строк с нулевыми значениями.