Теоретический материал (Паскаль)
Вставка и удаление строк и столбцов
Мы уже рассматривали такие действия для одномерных массивов. Обобщим для двумерных.
Вставка строк и столбцов
Для решения задачи вставки строки необходимо:
- Первые k строк оставить без изменения.
- Все строки после k-ой сдвинуть на одну назад, это лучше сделать, начиная с последней строки и идти до (k+1)-ой.
- Элементам строки k+1 присвоить заданное значение.
- Увеличить количество строк.
Кроме того, необходимо изменить размерность массива. Так как мы вставляем строку, то число строк будет на одну больше.
Задача. Вставить строку из нулей после строки с номером k.
Procedure Insert1(Var X : MyArray2; n, m : integer; k1 : integer); |
Для вставки столбца пользуйтесь практически тем же алгоритмом, только размерность увеличивается для столбцов и сдвигаем назад столбцы.
Задание. Напишите программу, содержащую процедуры вставки строки и столбца из заданного одномерного массива.
И еще несколько советов:
- Если необходимо выполнить вставку после строки, удовлетворяющей какому-либо условию, то надо найти лишь ее номер, и задача сводится к рассмотренной выше.
- Если вставка необходима после всех строк с заданным условием, то надо увеличить размерность по строкам, и если строка удовлетворяет условию, то к ней применять вставку. При этом надо заметить, что лучше просматривать строки, начиная с последней, и ввести счетчик вставленных строк.
- Вставка перед строкой с данным номером отличается лишь тем, что начинать сдвиг назад надо не с (k+1)-ой строки, а с k-ой.
Удаление строк и столбцов
Для решения задачи удаления строки необходимо:
- Сдвинуть все строки, начиная с данной на одну вверх.
- Последнюю строку обнулить.
- Уменьшить количество строк.
Процедура удаления строки приведена ниже.
Procedure Delete1(Var X : MyArray2; Var n, m : integer; k1 : integer); |
Удаление столбца аналогично удалению строки.
И еще несколько советов:
- При выводе на экран полученного массива не выводите нулевые строки и столбцы.
- Задачу об удалении строки с заданным условием можно решить тем же способом, достаточно только найти ее номер, а в случае отсутствия такой строки можно просто сообщить об этом и закончить программу.