русс | укр

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

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

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

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


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

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


Дата добавления: 2013-12-23; просмотров: 2769; Нарушение авторских прав


Begin

Begin

Clrscr;

Input(A);

Print(n,A); { первый вывод начального массива из n элементов }

Writeln(‘Введите номер элемента, после которого вставлять, ’);

Writeln(‘и вставляемое число’);

Readln(k,x); {ввод номера и вставляемого элемента}

Insert(k,x,A);

Print1(n+1,A); {вывод массива после вставки в него}

Readkey;

End.

 

Пример 5. Вставить число после всех элементов массива, кратных 3.

Решение. Первое, на что необходимо обратить внимание — это описание массива: на сколько элементов может увеличиться массив? Максимальное число элементов, после которых будет вставлен новый элемент, совпадает с числом элементов массива, так как может случиться так, что все элементы массива отвечают заданному свойству. Поэтому массив может увеличиться в два раза (это его самая большая размерность).

Второе. Если мы будем просматривать элементы массива с начала и вставлять новый после элемента с заданным свойством, то номер последнего элемента каждый раз может меняться, кроме того, будет просматриваться и новый (вставленный) элемент и его необходимо будет пропускать («перепрыгивать»), поэтому решение будет не очень эффективным.

Лучше всего просматривать массив, начиная с конца, тогда вставляемый элемент мешать не будет. Кроме того, номер последнего элемента можно будет знать (если знать, сколько элементов вставлено на данный момент), при этом просмотр будет последовательным от N-го до 1-го.

Program Example_5;

Uses crt;

Const n=10; dd=51;

Type myarray=Array[1.. 2*n] Of Integer;

VarA: myarray;

x, k, i :Integer; {x – вставляемое число, k – число вставленных элементов}

Procedure Input( Var m:myarray); {процедура заполнения (инициализации) массива случайными числами}

...

Procedure Print(n1: Integer; m: myarray); {процедура вывода (распечатки) массива}



...

Procedure Insert2(k1, x1: Integer; Var m: myarray);

Var i: Integer;

Begin{сдвиг элементов на одну позицию назад, n+k – это номер последнего элемента в данный момент}

For i:=n+k Downto k1+1 Do m[i+1]:=m[i];

m[k1+1]:=x1; {вставка элемента на место – после k1–го}

Inc(k); {увеличение счетчика вставленных элементов}

End;

Clrscr;

Input(A);

Print(n,A);

Writeln(‘Введите вставляемое число’);

Readln(x);

k:=0;

For i:= n Downto 1 Do

If A[i] Mod 3=0 Then Insert2(i,x,A);

Print(n+k,A); {вывод массива после вставки в него всех элементов}

Readkey;

End.

 

 

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

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

· Первые k строк оставить без изменения.

· Все строки после k-ой сдвинуть на одну назад, это лучше начать с последней строки и идти до (k+1)-ой.

· Элементам строки k+1 присвоить заданное значение.

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

 

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

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

· Сдвинуть все строки, начиная с данной, на одну вверх.

· Последнюю строку «обнулить», то есть всем элементам последней строки присвоить значение 0.

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

 

7. Сортировка методом простого обмена («Пузырька»)

 

Пример 8. Упорядочить члены числовой последовательности по возрастанию

Решение. Рассматриваем массив слева направо и обмениваем местами соседние элементы расположенные «неправильно», т. е. для i<j , a[i]>a[j].

Например, дана последовательность 3 9 6 8 1 из пяти элементов (n=5)

1-й просмотр 3 6 8 1 9

2-й просмотр 3 6 1 8 9

3-й просмотр 3 1 6 8 9

4-й просмотр 1 3 6 8 9

Всего n-1 просмотр. За каждый просмотр количество просматриваемых элементов уменьшается на 1, т. к. каждый раз отсортировывается один (больший) элемент.

Для упорядочения воспользуемся вложенными циклами: 1-й цикл по номеру просмотра, 2-й - по номеру элементов

For i:=1 to n-1 do

For j:=1 to n-i do

If a[j+1]<a[j] then

begin

m:=a[j+1]; a[j+1]:=a[j]; a[j]:=m;

end;

Ниже приведена программа полностью

 

program sort;

uses crt;

var i,j,n,m:integer; a: array [1..100] of integer;

Begin

clrscr;

writeln('input n< =100'); readln(n); - ввод количества элементов массива

{Ввод элементов массива}

for i:=1 to n do

begin

writeln('input a[',i,']:'); readln(a[i]);

end;

{Сортировка массива}

For i:=1 to n-1 do

For j:=1 to n-i do

If a[j+1]<a[j] then

begin

m:=a[j+1]; a[j+1]:=a[j]; a[j]:=m;

end;

{Вывод отсортированного массива на экран}

writeln('massiv sorted');

for i:=1 to n do

write (a[i]:3);

readkey;



<== предыдущая лекция | следующая лекция ==>
Вставка элементов в одномерный массив | Утилиты


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


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

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

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


 


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

 
 

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

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