Обработка одномерного массива
Контрольная работа, 26 Ноября 2013, автор: пользователь скрыл имя
Краткое описание
Часть 1. Вычислить значения 39 элементов одномерного целочисленного массива Y в интервале (-10; 10) с использованием генератора случайных чисел.
Для получения целого случайного числа x на отрезке [a, b] в языке Паскале используется следующий оператор:
x := a + ROUND((b-a)*RANDOM (100)/100).
Прикрепленные файлы: 1 файл
романюк 999 .doc
— 156.50 Кб (Скачать документ)
Министерство образования и науки Российской Федерации
Государственное образовательное учреждение высшего профессионального образования
«УФИМСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЯНОЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра вычислительной техники
РАСЧЕТНОЕ ЗАДАНИЕ №2
Вариант № 85, 999
по дисциплине «Информатика»
Выполнил студент гр. БМТ1-11-03 _______________ _________________________
Принял доцент каф.ВТИК ________________ _________________________
подпись, дата
Уфа 2012
Постановка задачи
Разработать программу
получения и обработки
Часть 1. Вычислить значения 39 элементов одномерного целочисленного массива Y в интервале (-10; 10) с использованием генератора случайных чисел.
Для получения целого случайного числа x на отрезке [a, b] в языке Паскале используется следующий оператор:
x := a + ROUND((b-a)*RANDOM (100)/100).
Чтобы при каждом новом запуске программы получить новую последовательность случайных чисел, необходимо в начале программы исполнить оператор RANDOMIZE.
Часть 2. Вычислить среднегеометрическое значение каждых вторых элементов второй четверти массива.
Среднегеометрическое значение вычисляется по формуле
где К-количество ненулевых элементов в массиве.
Часть 3. Определить значение, по модулю самое близкое к заданному числу С среди нечетных по значению элементов всего массива.
Определить элемент массива – это значит найти его положение (индекс) в массиве и его значение. Если требуемому условию удовлетворяют несколько элементов, то нужно установить индекс и значение каждого из них.
Часть 4. Упорядочить положительные элементы второй трети массива по убыванию модулей обратных.
В исходном массиве упорядочиваются только те элементы, которые удовлетворяют заданным условиям, при этом остальные элементы своё положение сохраняют и вспомогательный массив не используется.
Для проверки правильности упорядочения всего массива или его части выводить все его элементы.
Обязательные требования к программе.
1. Программу разработать для
решения задачи в общем виде,
для произвольных значений
2. Решение каждой части в програм
3. Предусмотреть 3 варианта исполнения программы:
Тестовый расчёт
Решение задачи для одной и той же последовательности случайных значений элементов массива при новом запуске программы для одних и тех же исходных данных ( Randomize не используется).
Решение задачи для новой последовательности случайных значений элементов массива при новом запуске программы (c Randomize).
Анализ задачи.
Исходными данными являются значения количества элементов в массиве n и отрезок [a, b].
Порядок решения задачи: сначала нужно получить одномерный массив
(часть 1), затем можно вычислить параметр массива (часть 2) или найти нужный элемент (часть 3). Упорядочение массива (часть 4) нужно выполнить в последнюю очередь, так как перестановка элементов массива при упорядочении может повлиять на вычисление параметра массива и определение нужного элемента.
Для лучшего понимания задачи, выявления её особенностей выполним тестовый расчёт.
Возьмём любые исходные данные, например n=17, а =-3, в = 4. Запишем 17 случайных целых чисел от -3 до 4 – это значения элементов массива R для тестового расчёта.
1, 0, -3, 2, 0, -3, 4, 3, 2, 0, 0, 4, 0, -2, -1, -1, 1
Для вычисления среднегеометрического значения каждых вторых элементов второй четверти массива сначала требуется в общем виде выделить номера элементов второй четверти массива. Номер первого элемента первой четверти вычисляется по формуле [n/4]+1 (квадратные скобки обозначают операцию выделения целой части значения выражения). Использование данной операции при определении номеров элементов в большинстве случаев позволяет равномерно разделить массив на части: [17/4] +1 = [4,25] +1 = 4+1=5, номер последнего элемента: [n/2] = [17/2] = [8,5] = 8.
Запишем элементы всего массива
x1 x2 x3 x4 x5 x6 x7 x8
1 0 -3 2 0 -3 4 3
x9 x10 x11 x12 x13 x14 x15 x16 x17
2 0 0 4 0 -2 -1 -1 1
Выделим подчёркиванием каждые вторые элементы, относящиеся ко второй четверти массива.
Нужных элементов k =2, их среднегеометрическое Sg = √-9 = 0.
При вычислении Sg могут возникнуть следующие проблемы:
1. Не будет нужных элементов ( к = 0 ), например, если все подходящие элементы равны 0. В этом случае нужно принять Sg = 0.
2. Потребуется извлечь корень чётной степени из отрицательного значения произведения ( например, если x16 = 1 ). Это некорректная операция, нужно принять Sg = 0.
Выявленные возможные проблемы нужно учесть при разработке алгоритма.
Можно записать математическую формулировку задачи данной части:
где: k – количество нужных (четных
по номеру, ненулевых) элементов во второй
половине массива R;
- произведение нужных элементов.
где: k – количество нужных ( ненулевых)
элементов в массиве V;
Для определения значения, по модулю наиболее близкого к заданному числу С среди нечетных элементов всего массива не требуется предпринимать каких-либо дополнительных действий.
Запишем элементы всего массива:
x1 x2 x3 x4 x5 x6 x7 x8
1 0 -3 2 0 -3 4 3
x9 x10 x11 x12 x13 x14 x15 x16 x17
2 0 0 4 0 -2 -1 -1 1
Выделим подчёркиванием нечетные элементы. Искомое число С определяется как С = |a+b|/2, т. е. С = 0,5. Нужных элементов 3, наиболее близкое к заданному значение равно 1, такое значение имеют два элемента: x1=1 и x17 =1.
При решении данной задачи могут быть следующие ситуации:
- Не будет нужных элементов;
- Будет единственный элемент с искомым значением;
- Будет множество элементов с искомым значением.
При выборочном упорядочивании элементов массива сначала выделим нужную часть массива. Первый элемент второй трети массива имеет номер [n/3] + 1 = [17/3] +1 = [5,67] +1 = 5 + 1 = 5, последний элемент, соответственно, имеет номер [2n/3] = [34/3] = [11,33] = 11.
Запишем элементы второй трети
Элементы x6 x7 x8 x9 x10 x11 x12
Значения элементов -3 4 3 2 0 0 4
Модуль обратного
Упорядоченные элементы -3 2 3 4 0 0 4
Алгоритм решения задачи
При разработке алгоритме будем использовать метод декомпозиции: решение задачи сначала опишем в виде основного алгоритма, использующего вспомогательные алгоритмы решения задач частей задания. Затем опишем вспомогательные алгоритмы – модули решения задач каждой части. При разработке и описании алгоритмов используются элементарные структуры алгоритмов, составляющие основу структурного программирования.
При разработке основного алгоритма нужно учесть обязательные требования, сформулированные в постановке задачи и рекомендации по разработке сложных программ:
- Необходимо задачу решать в общем виде, для любых допустимых значений исходных данных.
- Предусмотреть возможность выполнения 3 вариантов расчёта.
Введём вспомогательную переменную Vr для управления вариантом расчёта: если Vr =0 – тестовый расчёт, Vr = 1 – без Randomize, любое другое значение Vr – расчёт с Randomize. - Модули должны быть относительно независимы: обязательно иметь имя, свои входные, выходные и промежуточные данные, не использовать глобальные переменные, ввод и вывод данных в модуле может быть только в случае необходимости.
- Действия алгоритма поясняются на естественном языке, в обозначениях постановки задачи, не используются конструкции языка программирования
3.2 Алгоритм получения элементов вектора
- Алгоритм определения значения элемента, ближайшего по модулю к заданному числу С среди нече
тных элементов всего массива
3.5 Упорядочение массива
- Текст программы на Паскале
Program RGR_2;