Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР №4.doc
Скачиваний:
12
Добавлен:
07.06.2015
Размер:
70.66 Кб
Скачать

Но!!! 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 – один цикл, для обработки массива

задание 2 – два цикл, предобработка и формирование нового

Задачи

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

    1. Из массива A(N) перепишите элементы в массивB, так чтобыBсодержал возрастающую последовательность чисел.

    2. Переписать в массив Yэлементы массиваX(N) кратныеm.

    3. Переписать в массив Bэлементы массиваA(N) кратныеA(m).

    4. В массив Bпереписать положительные элементы массиваA(N).

    5. В массив Bпереписать четные элементы массиваA(N).

    6. Из массива A(N) перепишите элементы в массивB, так чтобыBсодержал убывающую последовательность чисел.

    7. В массив Rпереписать номера элементов массиваP(N), для которых выполняется условие: соседство двух положительных чисел.

    8. В массив Rпереписать номера элементов массиваP(N), для которых выполняется условие: соседство четных или нечетных чисел.

    9. В массив Bпереписать элементы массиваA(N), которые больше заданногоF.

    10. Сформировать массив Yиз массиваX(N), так чтобыYне содержал повторяющиеся элементы.

    11. Сформировать массив Yиз массиваX(N), так чтобыYсодержал элементы, которые больше двух раз присутствуют в массивеX(N).

    12. Сформировать массив Yиз массиваX(N), так чтобыYне содержал нулевых элементов.

    13. Сформировать массив Yиз массиваX(N), так чтобыYсодержал только полиндромы массиваX(N).

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

    1. Переписать из массива Y(N) в массивXэлементы, значения которых больше среднего арифметического элементов массиваY(N).

    2. Переписать из массива Y(N) в массивXэлементы, значения которых больше среднего гармонического элементов массиваY(N).

    3. В массив Rпереписать элементы массиваD(N), значения которых удовлетворяет условию, где- среднее арифметическое элементов массиваD(N).

    4. Переписать из массива Y(N) в массивXэлементы, которые меньше среднего геометрического элементов массиваY(N).

    5. Переписать в массив Yэлементы массиваX(N) кратные минимальному элементу массиваX(N).

    6. Переписать в массив Yэлементы массиваX(N), которые наmменьше максимального значения массиваX(N).

    7. Из массивов A(N) иB(N) сформировать массивC, состоящий из тех элементов, которые присутствуют в обих массивах.

    8. Из массивов X(N) иY(N) сформировать массивZ, состоящий из тех элементов, которые присутствуют только в одном из массивов.

    9. Сформировать массив точек, лежащих в заданной четверти декартовых координат. Координаты точек заданы массивами  X(N) и Y(N).

    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.