Вставка и удаление строк и столбцов
Вставка строки (для столбцов - аналогично) k Первые k строк оставить без изменения. k (k+1) Все строки после k-ой сдвинуть на одну назад, это лучше сделать, начиная с последней строки и идти до (k+1)-ой. k+1 Элементам строки k+1 присвоить заданное значение. Увеличить количество строк ( не забудьте про то, что размерность массива тоже увеличится! ).
Вставить строку из нулей после строки с номером k Procedure Insert1(Var X : MyArray2; n, m : integer; k1 : integer); Var i, j : integer; Begin for i := n downto k1 +1 do for j := 1 to m do X[i+1, j] := X[i, j]; {элементу столбца j присваиваем элемент этого же столбца, но из предыдущей строки} for j := 1 to m do X[k1+1, j] := 0; Inc(n); End;
Советы: Если необходимо вставить после строки, удовлетворяющей какому-либо условию, то надо найти лишь ее номер и задача сводится к рассмотренной выше. Если надо вставлять после всех строк с заданным условием, то надо увеличить размерность по строкам, и если строка удовлетворяет условию, то к ней применять вставку. При этом надо заметить, что лучше просматривать строки с последней и ввести счетчик вставленных строк. k+1 k Вставка перед строкой с данным номером отличается лишь тем, что сдвигать назад надо не с (k+1)-ой строки, а с k-ой.
Решение задач Напишите программу, содержащую процедуры вставки строки и столбца из заданного одномерного массива.
Удаление строки (для столбца - аналогично) Сдвинуть все строки, начиная с данной на одну вверх. Последнюю строку обнулить. Уменьшить количество строк.
Процедура удаление строки Procedure Delete1(Var X : MyArray2; Var n, m : integer; k1 : integer); Var i, j : integer; Begin for i := k1 to n-1 do for j := 1 to m do X[i, j] := X[i+1, j]; for j := 1 to m do X[n, j] := 0; Dec(n); End;
Советы: При выводе на экран полученного массива не выводите нулевые строки и столбцы. Задачу об удалении строки с заданным условием можно решить тем же способом, достаточно только найти ее номер, а в случае отсутствия такой строки можно просто сообщить об этом и закончить программу.
Решение задач Вставить нулевую строку и нулевой столбец перед строками и столбцами, где находятся минимальные элементы. Удалите строки, содержащие ноль, а затем столбцы, в которых только отрицательные элементы. Если такого столбца или строки нет, то вывести сообщение об этом.
Решение задач Удалить строки с номерами, кратными k, и столбцы, в которых нет отрицательного элемента. Если такого столбца или строки нет, то вывести сообщение об этом. Удалите столбцы, в которых есть заданный элемент