Одномерные массивы

Порядок выполнения работы

Теоретический материал

Требования к знаниям

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 23

Тема: «Разработка программного продукта с динамическими массивами»

Цели:

- закрепление изученного материала по применению динамических массивов в Delphi;

- формирование навыков разработки алгоритмов с применением динамических массивов.

 

Характер занятия: поисковый.

Форма организации: фронтальная.

Обеспечение занятия: ПК, ОС Windows, Delphi, ручка, карандаш, линейка, тетрадь по практическим работам.

Перед выполнением практической работы студент должен

знать:

- основные элементы IDE Delphi и принципы работы в ней;

- основные операторы языка Object Pascal.

 

после выполнения практической работы студент должен

уметь:

- разрабатывать алгоритмы с использованием динамических массивов.

 

 

Массив - это упорядоченный набор данных. В программе массив объявляется следующим образом:var My_Array : array[index1..indexN] of BaseType где index1 и indexN принадлежат упорядоченному типу, диапазон которого не превышает 2Gb; BaseType - тип элементов массива.Динамические массивы не имеют фиксированного размера или длины. Для объявления такого массива достаточно записать:var My_Array : array of Real; Для выделения памяти для динамического массива используется процедура SetLength:SetLength(My_Array,100);После вызова этой процедуры будет выделена память для 100 элементов массива, которые будут проиндексированы от 0 до 99 Динамические массивы - это неявные указатели и обслуживаются тем же самым механизмом, который используется для обработки длинных строк (long strings). Чтобы освободить память, занимаемую динамическим массивом, присвойте переменной, которая ссылается на массив, значение nil: My_Array:=nil.Объявление двумерного массива:Var mas:array of array of integer;

1. Изучите теоретический материал.

2. Разработайте алгоритм с применением динамических одномерных массивов согласно варианту.

3. Разработайте алгоритм с применением динамических двумерных массивов согласно варианту.

 

Варианты заданий:

1. Дан массив размера N. Вывести его элементы в обратном порядке.

2. Дан массив размера N. Вывести вначале его элементы с четными индексами, а затем — с нечетными.

3. Дан целочисленный массив A размера N. Вывести номер первого из тех его элементов A[i], которые удовлетворяют двойному неравенству: A[1] < A[i] < A[N]. Если таких элементов нет, то вывести 0.

4. Дан целочисленный массив размера N. Преобразовать его, прибавив к четным числам первый элемент. Первый и последний элементы массива не изменять.

5. Дан целочисленный массив размера N. Вывести вначале все его четные элементы, а затем — нечетные.

6. Поменять местами минимальный и максимальный элементы массива размера N.

7. Заменить все положительные элементы целочисленного массива размера N на значение минимального.

8. Дан массив размера N. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами.

9. Дан массив размера N. Осуществить циклический сдвиг элементов массива влево на одну позицию.

10. Дан массив размера N и число k (0 < k < 5, k < N). Осуществить циклический сдвиг элементов массива влево на k позиций.

11. Проверить, образуют ли элементы целочисленного массива размера N арифметическую прогрессию. Если да, то вывести разность прогрессии, если нет — вывести 0.

12. Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем четные и нечетные числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность.

13. Дан массив размера N. Найти количество его локальных минимумов.

14. Дан массив размера N. Найти максимальный из его локальных минимумов.

15. Дан массив размера N. Определить количество участков, на которых его элементы монотонно возрастают.

16. Дан массив размера N. Определить количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают).

17. Дано вещественное число R и массив размера N. Найти элемент массива, который наиболее близок к данному числу.

18. Дано вещественное число R и массив размера N. Найти два элемента массива, сумма которых наиболее близка к данному числу.

19. Дан массив размера N. Найти номера двух ближайших чисел из этого массива.

20. Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов.

21. Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся менее двух раз.

22. Дан целочисленный массив размера N. Если он является перестановкой, то есть содержит все числа от 1 до N, то вывести 0, в противном случае вывести номер первого недопустимого элемента.

23. Дан массив размера N. Преобразовать его, вставив перед элемента нулевой элемент.

24. Даны два массива A и B размера N, элементы которых упорядочены по возрастанию. Объединить эти массивы так, чтобы результирующий массив остался упорядоченным.

25. Дан массив размера N. Вывести индексы массива в том порядке, в котором соответствующие им элементы образуют возрастающую последовательность.

26. Дана точка A и множество B из N точек. Найти номер точки из множества B, наиболее близкой от точки A.

27. Дано множество A из N точек. Среди всех точек этого множества, лежащих в первой четверти, найти точку, наиболее близкую от начала координат. Если таких точек нет, то вывести точку с нулевыми координатами.

28. Дано множество A из N точек. Найти пару различных точек этого множества с минимальным расстоянием между ними и само это расстояние (точки выводятся в том же порядке, в котором они перечислены при задании множества A).

29. Дано множество A из N точек. Найти такую точку из данного множества, сумма расстояний от которой до остальных его точек минимальна, и саму эту сумму.

30. Даны множества A и B, состоящие соответственно из N1 и N2 точек. Найти минимальное расстояние между точками этих множеств и сами точки, расположенные на этом расстоянии.