
- •Отчет По лабораторной работе №4
- •Часть 1. Вычислить значения 39 элементов одномерного целочисленного массива f в интервале (-7,8) с использованием генератора случайных чисел.
- •Часть 2. Вычислить среднегеометрическое значение положительных элементов третьей четверти массива.
- •Часть 3. Определить значение, самое близкое к заданному числу с среди элементов нечетных по номеру второй половины массива.
- •Часть 4. Упорядочить положительные элементы последней четверти массива по убыванию квадратов.
- •3.1 Основной алгоритм
- •3.2 Алгоритм получения элементов вектора
- •3.3 Алгоритм вычисления среднегеометрического значения
- •3.4 Алгоритм определения значения, самого близкого к заданному числу с
- •3.5 Упорядочение массива
- •4. Таблицы переменных задачи
- •5. Текст программы на Паскале
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
«Уфимский государственный нефтяной технический университет»
Кафедра «Вычислительная техника и инженерная кибернетика»
Отчет По лабораторной работе №4
Вариант № 913
по дисциплине «Информатика»
Студент гр. БСТ 12-01 _________________ А.А.Аетов
(подпись, дата)
Ст. преподаватель _________________ М.А.Салихова
(подпись, дата)
УФА
2012
Постановка задачи
Разработать программу получения и обработки одномерного массива, состоящую из 4 частей.
Часть 1. Вычислить значения 39 элементов одномерного целочисленного массива f в интервале (-7,8) с использованием генератора случайных чисел.
Для получения целого случайного числа x на отрезке [a, b] в языке Паскале используется следующий оператор:
x := a + ROUND((b-a)RANDOM (100)100).
Чтобы при каждом новом запуске программы получить новую последовательность случайных чисел, необходимо в начале программы исполнить оператор RANDOMIZE.
Часть 2. Вычислить среднегеометрическое значение положительных элементов третьей четверти массива.
Среднегеометрическое значение элементов заданного массива A = {a1, a2, a3, …, an} вычисляется по формуле
где i-порядковый номер элемента массива.
Часть 3. Определить значение, самое близкое к заданному числу с среди элементов нечетных по номеру второй половины массива.
Определить элемент массива – это значит найти его положение (индекс) в массиве и его значение. Если требуемому условию удовлетворяют несколько элементов, то нужно установить индекс и значение каждого из них.
Часть 4. Упорядочить положительные элементы последней четверти массива по убыванию квадратов.
В исходном массиве упорядочиваются только те элементы, которые удовлетворяют заданным условиям, при этом остальные элементы своё положение сохраняют и вспомогательный массив не используется.
Для проверки правильности упорядочения всего массива или его части выводить все его элементы.
Обязательные требования к программе.
1. Программу разработать для решения задачи в общем виде, для произвольных значений исходных данных: количества элементов n (2<=n<=100) и отрезка [a, b] (b>=a).
2. Решение каждой части в программе реализовать в виде процедуры.
3. Предусмотреть 3 варианта исполнения программы:
Тестовый расчёт
Решение задачи для одной и той же последовательности случайных значений элементов массива при новом запуске программы для одних и тех же исходных данных ( Randomize не используется).
Решение задачи для новой последовательности случайных значений элементов массива при новом запуске программы (c Randomize).
Анализ задачи.
Исходными данными являются значения количества элементов в массиве n и отрезок [a, b].
Порядок решения задачи: сначала нужно получить одномерный массив (часть 1), затем можно вычислить параметр массива (часть 2) или найти нужный элемент (часть 3). Упорядочение массива (часть 4) нужно выполнить в последнюю очередь, так как перестановка элементов массива при упорядочении может повлиять на вычисление параметра массива и определение нужного элемента.
Для лучшего понимания задачи, выявления её особенностей выполним тестовый расчёт.
Возьмём любые исходные данные, например n=16, а =-3, в = 4. Запишем 16 случайных целых чисел от -3 до 4 – это значения элементов массива F для тестового расчёта.
1, 0, -3, 2, 0, -3, 4, 3, 2, 0, 0, 4, 0, -2, -1, -1
Для вычисления среднегеометрического значения сначала нужно выделить в общем виде положительные элементы массива. Положительные элементы удовлетворяют выражению f[i]>0. Запишем эти элементы. Также они не должны быть равны нулю.
X5 x6 x7 x8
2 0 0 4
Среднегеометрическое значение этих элементов равно 2.828.
Для определения элемента самого близкого к заданному числу С сначала выделим элементы второй половины массива. Первый будет [n/2+1]. Нечетный по номеру I mod 2 = 1
Запишем элементы второй половины массива:
X9 x10 x11 x12 X13 x14 x15 x16
2 0 0 4 0 -2 -1 -1
Ближайшее число 2 при C =5.
При выборочном упорядочивании элементов массива сначала выделим нужную часть массива. Первый элемент последней четверти массива имеет номер [3*n/4]+1 Они должны быть положительными.
Запишем элементы второй четверти
Элементы x13 x14 x15 x16
Значения элементов 0 -2 -1 -1
Упорядоченные элементы
Алгоритм решения задачи
При разработке алгоритме будем использовать метод декомпозиции: решение задачи сначала опишем в виде основного алгоритма, использующего вспомогательные алгоритмы решения задач частей задания. Затем опишем вспомогательные алгоритмы – модули решения задач каждой части. При разработке и описании алгоритмов используются элементарные структуры алгоритмов, составляющие основу структурного программирования.
Основной алгоритм.
При разработке основного алгоритма нужно учесть обязательные требования, сформулированные в постановке задачи и рекомендации по разработке сложных программ:
Необходимо задачу решать в общем виде, для любых допустимых значений исходных данных.
Предусмотреть возможность выполнения 3 вариантов расчёта. Введём вспомогательную переменную Vr для управления вариантом расчёта: если Vr =0 – тестовый расчёт, Vr = 1 – без Randomize, любое другое значение Vr – расчёт с Randomize.
Модули должны быть относительно независимы: обязательно иметь имя, свои входные, выходные и промежуточные данные, не использовать глобальные переменные, ввод и вывод данных в модуле может быть только в случае необходимости.
Действия алгоритма поясняются на естественном языке, в обозначениях постановки задачи, не используются конструкции языка программирования