Удаление элемента из отсортированного массива 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Удаление элемента из отсортированного массива



В алгоритме удаления элемента из отсортированного массива можно использовать рассмотренную выше функцию для поиска индекса удаляемого элемента. После определения этого индекса, элемент удаляется путем сдвига влево на одну позицию всех элементов, находящихся за удаляемым. Значение переменной, в которой хранится количество элементов, уменьшается на единицу.

Процедура удаления элемента из отсортированного массива приведена ниже.

// Удаление элемента из отсортированного массива

// x – элемент, который нужно удалить

// а – упорядоченный массив, count – число элементов в нем

procedure DelFromSortArray (x: integer; var a: TArray100; var count: integer);

var i, pos, left, right: integer;

Begin

pos:= FindPosInSortArray (x,a,count);

if pos = 0 then exi t;

count:= count – 1;

for i:= pos to count do a[i]:=a[i+1];

end;

8.4 Задание для самостоятельной работы

В лабораторной работе следует создать проект, в соответствии с требованиями варианта из таблицы 8.1. Номер варианта выбирается по последней цифре номера зачетной книжки.

Главное меню проекта должно включать следующие пункты:

– Создание массива

– Сортировка массива

– Вставка элемента в массив

– Удаление элемента из массива

На форме должно быть поле для ввода количества элементов массива и поле для максимального значения числа в массиве (если тип элементов ±Real).

Ввод удаляемого и вставляемого элемента на усмотрение разработчика.

Компоненты для хранения исходного массива и массива, получаемого в результате обработки, должны соответствовать варианту задания. Глобальные переменные для хранения массива и количества данных в нем использовать не следует. При выполнении каждого пункта меню всю необходимую информацию считывать с формы.

Студенты, для которых реализация сортировки по усложненному правилу окажется сложной, могут сортировать массив по обычному правилу на возрастание или убывание, но в этом случае оценка за проект будет ниже.

 

Таблица 8.1 – Задания на лабораторную работу
Создание исходного массива Хране ние масс. Тип данных массива 1-й уровень сортировки 2-й уровень сортировки Метод сортировки
  InputBox TMemo String По длине строки на возрастание По алфавиту Вставкой
  Random Tedit ±Real Отрицатель- ные, затем положительн. На убывание Обменом
  InputBox Tmemo String По длине строки на убывание По алфавиту Выбором
  Random Tedit ±Real Положитель-ные, затем отрицател. На возраста-ние Вставкой
  InputBox Tmemo String По длине строки на убывание С конца алфавита Обменом
  Random Tedit ±Real     Выбором
  InputBox Tmemo String По длине строки на возрастание С конца алфавита Вставкой
  Random Tedit ±Real Вначале большие 1 затем меньшие На возраста-ние Обменом
  InputBox TMemo String Слова с цифрами в конец   По алфавиту Выбором
  Random TEdit ±Real Вначале меньшие 1 затем большие На убыва-ние Вставкой

8.5 Содержание отчета

– Наименование работы

– Цель работы

– Краткое описание изученных методов сортировки массивов

– Тексты процедур и функций, разработанных самостоятельно

– Результаты тестирования проекта в виде копий экранов

– Выводы

Контрольные вопросы

– Сортировка выбором

– Сортировка обменом

– Сортировка вставкой

– Вставка элемента в отсортированный массив

– Слияние отсортированных массивов.

– Поиск элемента в отсортированном массиве

– Удаление элемента из отсортированного массива

9 ЛАБОРАТОРНАЯ РАБОТА № 9.
РАБОТА С ДВУМЕРНЫМИ МАССИВАМИ (МАТРИЦАМИ)

Цели работы:

– Познакомиться со способами описания матриц в Object Pascal.

– Освоить алгоритмы тотальной и выборочной обработки элементов матриц

– Освоить алгоритмы простейших преобразований матриц

– Освоить алгоритмы сортировки матриц

– Познакомиться с процедурным типом данных

9.1 Краткие теоретические сведения

Матрица – это тип данных, которому соответствует таблица. При работе с матрицами оперируют понятиями имя матрицы, столбец, номер столбца, строка, номер строки, элемент, размер матрицы, например 3 х 4.

Каждый элемент матрицы имеет свое значение, тип которого соответствует типу данных записанных в таблице. Элементов в матрице много, поэтому для идентификации их используют индексы.

С понятием индекса мы уже встречались в предыдущей работе, где с помощью индекса идентифицировались элементы массива.

В матрице, для идентификации элемента, требуется два индекса. Это как бы координаты элемента в матрице. При обращении к элементу его индексы указывают после имени матрицы в квадратных скобках, разделяя их запятой. Например, если имя матрицы matrix, то matrix[2,3] – это элемент матрицы с координатами 2 и 3. Какой из индексов определяет строку, а какой столбец - это решает программист. Мы будем далее считать, что первый индекс задает номер строки, а второй – номер столбца, и начинать нумерацию будем с 1. Так принято у математиков. Но у компонента StringGrid, который будет часто использоваться в этой лабораторной работе все наоборот, первый индекс – это номер столбца, второй индекс – это номер строки, и нумерация начинается с 0. Это пример плюрализма мнений. Постарайтесь не запутаться.

В общем случае, в качестве индексов матрицы могут использоваться данные любого из порядковых типов, например, столбцы или строки можно нумеровать не числами, а символами, в частности буквами. Но в данной лабораторной работе мы будем, в основном, использовать числовую нумерацию.

Описание матриц

Матрицу логичнее всего описать как массив массивов. Во фрагменте подпрограммы, представленном ниже в качестве примера, описан тип TMatrix4x3, представляющий таблицы целых чисел. Эти таблицы имеют по 4 столбца и 3 строки. Индексы столбцов и строк начинаются с 1. В примере описана и переменная myMatrix типа TMatrix4x3.

Type

TMatrix4x3 = Array [1..4] of Array [1..3] of Integrer;

Var

myMatrix:TMatrix4x3;

Наряду с приведенным выше заданием типа для матрицы возможно и более короткое описание, пример которого приведен ниже.

Type

TMatrix4x3 = Array [0..3, 0..2] of Integrer;

Var

myMatrix:TMatrix4x3;

Во всех рассмотренных выше примерах матрицы определялись как статические. Это означает, что размер матрицы фиксируется на этапе программирования и во время работы приложения меняться не может.

В тех случаях, когда заранее неизвестно, какого размера будет матрица, можно объявить ее размер с запасом, а в процедуры обработки передавать не только ссылку на матрицу, но и реальное количество строк и столбцов.

В учебных задачах, которые будут рассмотрены далее, будет предполагаться, что используется матрица размером 10х10, состоящая из целых чисел. Соответствующий тип назовем TMatrixInt10x10. Описание соответствующего типа будет выглядеть так.

Type

TMatrixInt10x10= Array[1..10,1..10] of Integrer;



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 185; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.86.56 (0.008 с.)