- •Лабораторная работа №1 Программирование алгоритмов линейной структуры
- •1. Программирование на Турбо-Паскале
- •Семь основных элементов программирования
- •2. Стандарт Турбо Паскаля Основные символы языка
- •Идентификаторы
- •Строки символов
- •Комментарии
- •Типы данных Целочисленный тип
- •Вещественный тип
- •Строковые типы
- •Операции
- •Операция присваивания
- •Операции отношений
- •Задания для самостоятельной работы
- •Задачи для самостоятельного решения
- •Лабораторная работа №2 Программирование алгоритмов с разветвляющейся структурой и с циклическими структурами.
- •Операторы языка Турбо-Паскаль Составной оператор
- •Условный оператор
- •Пример. Отыскание наибольшего числа.
- •Операторы цикла
- •Оператор цикла с параметром for
- •Пример. Расчёт факториала числа n с помощью оператора цикла с параметром
- •Оператор цикла whilEс предпроверкой условия
- •Пример. Расчёт факториала числа Nс помощью оператора цикла с предусловием.
- •Оператор цикла repeat…untiLс постпроверкой условия
- •Пример. Расчёт факториала числа Nс помощью оператора цикла с постусловием.
- •Задания для самостоятельной работы
- •Лабораторная работа №3 Программирование алгоритмов с разветвляющейся структурой и с циклическими структурами. Массивы
- •Массивы
- •Описание типа (type)
- •Но!!! Type mismatch
- •Контрольные вопросы
Но!!! 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]и т.д.
Сортировка методом вставки
На первом шаге выполняется сортировка первых двух элементов массива. Далее алгоритм ставит третий элемент в порядковую позицию, соответствующую его положению относительно первых двух элементов. Затем в этот список вставляется четвертый элемент и т.д. Процесс продолжается до тех пор, пока все элементы не будут отсортированы.
Задания для самостоятельной работы
Разработать программу на Турбо Паскале, которая обеспечивает решение поставленной задачи в соответствии с предложенным вариантом. Первая цифра номер задания, втораяномер варианта.
Задачи
Разработать программу, для решения поставленной задачи
В заданном массиве Х(N)замените нулями все отрицательные компоненты.
Осуществите циклический сдвиг компонент заданного вектора A(N)влево на одну позицию, то есть получите вектор А = (a2 , a3, ...,aN , a1).
В заданном массиве A(N)поменяйте местами наибольший и наименьший элементы.
В заданном массиве A(N)определите число соседств двух положительных чисел.
В заданном массиве A(N)определите количество элементов, которые меньше заданного значения.
В заданном массиве A(N)вместоa1 запишите наибольший элемент массива, а вместоaN— наименьший элемент массива.
В заданном массиве A(N)определите число соседств двух чисел разного знака.
Выведите на печать номера элементов заданного массива Y(N), удовлетворяющих условию0 < yi < 1.
Осуществите циклический сдвиг компонент заданного вектора A(N)вправо на две позиции, то есть получите вектор A = (aN-1 , aN , a1 , a2 , ... , aN-2).
Подсчитайте число и сумму положительных, число и произведение отрицательных элементов заданного массива A(N).
В заданном массиве A(N)замените нулями все положительные компоненты.
В заданном массиве X(N)определите число соседств двух положительных чисел.
Разработать программу, для решения поставленной задачи
Элементы заданного массива B(N)перепишите в новый массивA(N)в обратном порядке.
Заданные векторы X(N)иY(N)преобразуйте по правилу: большее изxiиyiпримите в качестве нового значенияxi , а меньшее — в качестве нового значенияyi .
Из заданного вектора A(3N)получите векторB(N), очередная компонента которого равна среднему арифметическому очередной тройки компонент вектораА.
Вычислите сумму квадратов всех элементов заданного массива X(N), за исключением элементов, кратных пяти.
Запишите подряд в массив A(N)элементы заданного массиваВ(2N), стоящие на чётных местах, а элементы, стоящие на нечетных местах, запишите в массивС(N).
Выведите на печать номера точек, лежащих в круге радиусом Rс центром в начале координат. Координаты точек заданы массивамиX(N) и Y(N).
Дан массив A(2N). Постройте массив с элементами, соответственно равнымиa1 , aN+1 , a2, aN+2 , ... , aN , a2N.
В заданном массиве A(N)положительные элементы уменьшите вдвое, а отрицательные замените на значения их индексов.
Из заданных векторов X(N)иY(N)получите векторZ(2N )c элементами(x1 , y1 , x2 , y2 , ..., xN , yN).
Дан массив A(2N). Постройте массив с элементами, соответственно равнымиa2N, a1 , a2N-1 , a2 , ... , aN+1 , aN .
Заданные векторы X(N)иY(N)преобразуйте по правилу: большее изxiиyiпримите в качестве нового значенияxi , а меньшее — в качестве нового значенияyi .
Элементы заданного массива B(N)перепишите в новый массивA(N)в обратном порядке.
Разработать программу, для решения поставленной задачи
В каждой строке заданной матрицы A(N, M)вычислите сумму, количество и среднее арифметическое положительных элементов.
Дана матрица A(N, M). Найдите количество элементов этой матрицы, больших среднего арифметического всех её элементов.
В заданной матрице A(N, M)поменяйте местами столбцы с номерамиPиQ.
Даны две целочисленные матрицы A(N, M)иB(N, M). Подсчитайте (в отдельности) количество тех пар (ai j , bi j ) , для которыхai j < bi j.
Дана матрица A(N, M). Вычислите векторX(M), где значениеXjравно сумме положительных элементовj-го столбца матрицыA.
Дана матрица A(N, M). Получите векторX(M), равныйP-й строке матрицы.
Дана матрица A(N, N). Перепишите элементы её главной диагонали в одномерный массивY(N).
Найдите наибольший элемент главной диагонали заданной матрицы A(N, N)и выведите на печать всю строку, в которой он находится.
Даны две целочисленные матрицы A(N, M)иB(N, M). Подсчитайте (в отдельности) количество тех пар (ai j , bi j ) , для которыхai j > bi j.
Дана матрица A(N, M). Определите число ненулевых элементов в каждой строке матрицы.
Дана матрица A(N, M). Вычислите векторX(M), где значениеXiравно сумме положительных элементовi-ой строкиматрицыA.
В заданной матрице A(N, M)поменяйте местами строки с номерамиKиL.