русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Вставка и удаление элементов двумерного массива


Дата добавления: 2015-09-15; просмотров: 746; Нарушение авторских прав


Вставка строки

Мы уже рассматривали такие действия для одномерных массивов. Обобщим для двумерных.

Пример 12

Вставить строку из нулей после строки с номером k.

Решение

Для решения этой задачи необходимо:

  1. Первые k строк оставить без изменения.
  2. Все строки после k-й сдвинуть на одну назад, это лучше начать с последней строки и идти до (k+1)-й.
  3. Элементы строки k+1 присвоить заданное значение.

Кроме того, необходимо изменить размерность массива. Так как мы вставляем строку, то число строк будет на одну больше:

Const n = 5; m = 7;
Type dmyarray = Array[1..n+1, 1..m] Of Integer;
Var A : dmyarray;

Теперь опишем процедуру вставки:

Procedure Insert(k1: Integer; Var x: dmyarray);
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 присваиваем элемент этого же столбца, но из предыдущей строки}
End;

Так как число строк меняется, то процедуру Print надо изменить, она должна выводить данное количество строк, начиная с первой:

Procedure Print1(n1: Integer; x: dmyarray);
Var i, j : Integer;
Begin
For i:=1 To n1 Do
Begin
For j:=1 To m Do Write(x[i,j]:4);
Writeln;
End;
End

Часть основной программы будет такой:

Begin
Init(A);
Print(n,A);
Writeln('Введите номер строки, после которой вставляем');
Readln(k);
Insert(k,A);
Print(n+1,A);
Readln;
End.

Примечания:

  1. Если необходимо вставить после строки, удовлетворяющей некоторому условию, то надо лишь найти её номер и задача сводится к решению первого примера.
  2. Если надо вставлять после всех строк с заданным условием, то надо увеличить размерность по строкам, и если строка удовлетворяет условию, то к ней применять вставку. При этом надо заметить, что лучше просматривать строки с последней и ввести счётчик вставленных строк.
  3. Вставка перед строкой с данным номером изменится только тем, что сдвигать назад надо не с (k+1)-й строки, а с k-й.
  4. Если надо вставлять столбцы, то размерность увеличивается для столбцов, а всё остальное практически не меняется: надо сдвинуть столбцы назад и на данное место записать новый столбец.

Пример 13



Удалить строку с номером k.

Решение

Для того, чтобы удалить строку с номером k, необходимо:

Сдвинуть все строки, начиная с данной, на одну вверх.
Последнюю строку "обнулить", то есть всем элементам последней строки присвоить значение 0.

Описание массивов оставим прежнее (для размерности n*m). Также в программе будем использовать процедуру вывода Print1 из предыдущего параграфа. Будем выводить на экран сначала все строки, а второй раз, после удаления, на одну меньше. Теперь опишем процедуру удаления строки с данным номером:

Procedure Delete(k1: Integer; Var x: dmyarray);
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
End;

Примечания:

  1. Задачу об удалении строки с заданным условием можно решить этим же способом, достаточно только найти её номер, а в случае отсутствия такой строки можно просто сообщить об этом и закончить программу.
  2. Ещё одну задачу можно решить, используя данную процедуру - удаление всех строк, которые отвечают некоторым свойствам - просматриваем строки от последней до первой, если строка удовлетворяет требованиям, то удаляем её и переходим к следующей, иначе сразу переходим. Для эффективного вывода надо ввести счётчик, который учитывает количество удалённых строк, а при выводе изменённого массива передаём процедуре Print1 значение n-k, где k - это счётчик.


<== предыдущая лекция | следующая лекция ==>
Двумерный массив. Работа с элементами | Перестановка элементов массива


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.