Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 ЛР 1.doc
Скачиваний:
14
Добавлен:
28.03.2016
Размер:
61.95 Кб
Скачать

Но!!! Type mismatch

var

a: array[1..5] of real;

b: array[1..5] of real;

...

a := b; {Здесь возникнет ошибка несоответствия типов}

Однако над массивами не определены операции отношения, поэтому сравнить два массива можно только поэлементно.

Пример

var

a, b: array[1..5] of real;

eq: boolean;

i: integer;

...

eq := true;

for i := 1 to 5 do

if a[i]<>b[i] then eq := false;

if eq then ...

Методы сортировки массивов

Часто при решении задач обработки данных возникают задачи упорядочивания множества подобныхданных в возрастающем или убывающем порядке (задачи сортировки).

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

Метод пузырьковой сортировки

Пусть задан массив aизnэлементов. Сравниваются пары значенийa[i]иa[i+1]в интервале от1доn-1: еслиa[i] > a[i+1], то значения меняются местами. Алгоритм останавливается, когда больше нечего переставлять; в этом случае массив отсортирован. В каждом цикле проверки самый «легкий» элемент оказывается наверху списка. Поэтому наi-том цикле сортировку массива начинают сi-того элемента.

Сортировка методом отбора

При первом проходе ищется минимальное значение массива a, которое затем меняется местами с первым элементомa[1]. Затем поиск продолжается на оставшихсяn-1элементах, ищется второй минимум, который переставляется с элементомa[2]и т.д.

Сортировка методом вставки

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

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

Разработать программу на Турбо Паскале, которая обеспечивает решение поставленной задачи в соответствии с предложенным вариантом. Первая цифра номер задания, втораяномер варианта.

Задачи

  1. Разработать программу, для решения поставленной задачи

    1. В заданном массиве Х(N)замените нулями все отрицательные компоненты.

    2. Осуществите циклический сдвиг компонент заданного вектора  A(N)влево на одну позицию, то есть получите вектор А  =  (a2 ,  a3,  ...,aN ,  a1).

    3. В заданном массиве A(N)поменяйте местами наибольший и наименьший элементы.

    4. В заданном массиве A(N)определите число соседств двух положительных чисел.

    5. В заданном массиве A(N)определите количество элементов, которые меньше заданного значения.

    6. В заданном массиве  A(N)вместоa1 запишите наибольший элемент массива, а вместоaN— наименьший элемент массива.

    7. В заданном массиве A(N)определите число соседств двух чисел разного знака.

    8. Выведите на печать номера элементов заданного массива Y(N), удовлетворяющих условию0 < yi < 1.

    9. Осуществите циклический сдвиг компонент заданного вектора  A(N)вправо  на две позиции, то есть получите вектор A  =  (aN-1 ,  aN  ,  a1  ,  a  ,  ...  ,  aN-2).

    10. Подсчитайте число и сумму положительных, число и произведение отрицательных элементов заданного массива A(N).

    11. В заданном массиве A(N)замените нулями все положительные компоненты.

    12. В заданном массиве X(N)определите число соседств двух положительных чисел.

  1. Разработать программу, для решения поставленной задачи

    1. Элементы заданного массива B(N)перепишите в новый массивA(N)в обратном порядке.

    2. Заданные векторы X(N)иY(N)преобразуйте по правилу: большее изxiиyiпримите в качестве нового значенияxi , а меньшее — в качестве нового значенияyi .

    3. Из заданного вектора A(3N)получите векторB(N), очередная компонента которого равна среднему арифметическому очередной тройки компонент вектораА.

    4. Вычислите сумму квадратов всех элементов заданного массива X(N), за исключением элементов, кратных пяти.

    5. Запишите подряд в массив A(N)элементы заданного массиваВ(2N), стоящие на чётных местах, а элементы, стоящие на нечетных местах, запишите в массивС(N).

    6. Выведите на печать номера точек, лежащих в круге радиусом  Rс центром в начале координат. Координаты точек заданы массивамиX(N) и Y(N).

    7. Дан массив A(2N). Постройте массив с элементами, соответственно равнымиa1 ,  aN+1 ,  a2,  aN+2  ,  ... ,  aN ,  a2N.

    8. В заданном массиве   A(N)положительные элементы уменьшите вдвое, а отрицательные замените на значения их индексов.

    9. Из заданных векторов X(N)иY(N)получите векторZ(2N )c элементами(x1 ,  y1 ,  x2 ,  y2 ,  ...,  xN ,  yN).

    10. Дан массив A(2N). Постройте массив с элементами, соответственно равнымиa2N,  a1 ,  a2N-1 ,  a2  ,  ... ,  aN+1 ,  aN .

    11. Заданные векторы X(N)иY(N)преобразуйте по правилу: большее изxiиyiпримите в качестве нового значенияxi , а меньшее — в качестве нового значенияyi .

    12. Элементы заданного массива B(N)перепишите в новый массивA(N)в обратном порядке.

  1. Разработать программу, для решения поставленной задачи

    1. В каждой строке заданной матрицы A(N, M)вычислите сумму, количество и среднее арифметическое положительных элементов.

    2. Дана матрица A(N, M). Найдите количество элементов этой матрицы, больших среднего арифметического всех её элементов.

    3. В заданной матрице A(N, M)поменяйте местами столбцы с номерамиPиQ.

    4. Даны две целочисленные матрицы A(N, M)иB(N, M). Подсчитайте (в отдельности) количество тех пар (ai j , bi j ) , для которыхai j < bi j.

    5. Дана матрица A(N, M). Вычислите векторX(M), где значениеXjравно сумме положительных элементовj-го столбца матрицыA.

    6. Дана матрица A(N, M). Получите векторX(M), равныйP-й строке матрицы.

    7. Дана матрица A(N, N). Перепишите элементы её главной диагонали в одномерный массивY(N).

    8. Найдите наибольший элемент главной диагонали заданной матрицы A(N, N)и выведите на печать всю строку, в которой он находится.

    9. Даны две целочисленные матрицы A(N, M)иB(N, M). Подсчитайте (в отдельности) количество тех пар (ai j , bi j ) , для которыхai j > bi j.

    10. Дана матрица A(N, M). Определите число ненулевых элементов в каждой строке матрицы.

    11. Дана матрица A(N, M). Вычислите векторX(M), где значениеXiравно сумме положительных элементовi-ой строки матрицыA.

    12. В заданной матрице A(N, M)поменяйте местами строки с номерамиKиL.