Подписано в печать 19.12.02. Бумага офсетная. Формат 60х84 1/16.
Гарнитура “Таймс”. Печать трафаретная. Усл.-печ.л. 1,1. Уч.-изд. л. 1,0.
Тираж 150 экз.
Издательство Уфимского нефтяного государственного технического университета
Типография Уфимского нефтяного государственного технического университета
Адрес издательства и типографии:
450062, г. Уфа, ул. Космонавтов,1.
Введение
Большинство реальных задач, для решения которых создаются программы, представляют собой задачи обработки большого объема однотипных данных – массивов данных. Несмотря на большое разнообразие задач, процесс их решения описывается с помощью небольшого набора типовых алгоритмов обработки массивов: ввода и вывода, вычисления суммы и произведения, определения наибольшего и наименьшего элемента, упорядочения, сложения и умножения матриц и векторов, транспонирования матриц и др. Поэтому типовые алгоритмы обработки массивов данных являются одной из важнейших тем при изучении основ информатики.
Сборник содержит по1000 вариантов задач для двух заданий: “Обработка одномерных массивов” и “Обработка двухмерных массивов”. Индивидуальное задание на разработку программы может состоять из нескольких задач – частей задания.
Рекомендуется следующий порядок создания программы.
1. Проанализировать задание:понять задание; если требуется, формализовать задачу; выяснить исходные данные каждой задачи, результаты, последовательность решения; подготовить тестовые примеры расчета, спланировать форму ввода исходных данных и вывода результатов расчёта (разработать интерфейс программы).
2. Описать алгоритм решения.Основное требование к алгоритму: решение задачи в общем виде, при любых значениях исходных данных. При создании алгоритма рекомендуется использовать метод нисходящего проектирования (постепенного уточнения): сначала описать общую последовательность решения задач задания в виде нескольких крупных действий основного алгоритма, затем подробно описать алгоритмы решения отдельных задач. Для описания алгоритма решения любой задачи задания нужно сначала выбрать определенный типовой алгоритм, потом адаптировать его для конкретной задачи и оформить в виде отдельного алгоритмического модуля.
3. Составить программу.При составлении программы предусмотреть ввод данных в диалоговой форме, вывод данных с пояснениями. Алгоритмические модули программировать в виде функций и процедур (подпрограмм).
4. Отладить программу.Ввести программу в память ЭВМ, найти и исправить все ошибки в программе, подтвердить правильность программы тестовыми расчетами.
5. Выполнить расчеты.Выполнить серию расчетов с целью проверки работоспособности программы в широком диапазоне изменения исходных данных.
6. Отчитаться по выполненной работе.Продемонстрировать преподавателю работу программы, представить отчет и защитить его.
Номер варианта, количество задач в индивидуальном задании, требования к программе и форму отчетности назначает преподаватель.
Работа №1 “ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ”
Создать программу получения и обработки одномерного массива-вектора, состоящую из 4 частей..
Часть I. ПОЛУЧЕНИЕ ЭЛЕМЕНТОВ МАССИВА
Постановка задачи:
“Вычислить значения N элементов одномерного целочисленного массива ‹имя› в интервале (a ,b) c использованием генератора случайных чисел”
Значения N, a и b, обозначение массива <имя> для конкретного варианта нужно взять из табл.1 следующим образом:
- значение N по первой цифре номера варианта;
- обозначение массива <имя> по второй цифре номера варианта;
- границы интервала a и b по третьей цифре номера.
Например, для 013 варианта по цифре “0” нужно взять №=30, по цифре “1” обозначение массива F, по цифре “3” a = -7, b = 8 и постановка задачи приобретает следующий вид:
“Вычислить значения 30 элементов одномерного целочисленного массива F в интервале (-7, 8) с использованием генератора случайных чисел”
Таблица 1
Цифра варианта задания
Значение N
Обозначение массива <имя>
Интервал
a
B
D
F
G
H
R
T
V
W
X
Y
-6
-6
-7
-7
-8
-8
-9
-9
-10
-10
Комментарии к задаче
Случайные числа от 0 до 1 генерируются оператором в RANDOM Паскале или RND в БЕЙСИКЕ.
Для получения целого случайного числа Х в интервале (a, b) используется следующий оператор:
X= a + INT((b-a)*RND) - в Бейсике
X=a + ROUND((b-a)*RANDOM (100)/100) - в Паскале.
Чтобы при каждом новом запуске программы получить новую последовательность случайных чисел, необходимо в начале программы записать оператор RANDOMIZE.
Часть 2. ВЫЧИСЛЕНИЕ ПАРАМЕТРА МАССИВА
Постановка задачи:
“Вычислить <текст1> <текст2> элементов <текст3> массива”
Для каждого номера варианта постановка задачи конкретизируется по табл.2: по первой цифре номера варианта записывается <текст1>, по второй цифре номера варианта записывается <текст2>, <текст3> записывается по третьей цифре варианта задания.
Например, для 013 варианта постановка задачи имеет вид:
“Вычислить сумму положительных элементов третьей четверти массива”
Таблица 2
Цифра варианта задания
<текст1>
<текст2>
<текст3>
сумму
ненулевых
всего
произведение
положительных
первой половины
среднеарифметичес-кое значение
отрицательных
второй трети
среднеквадратичное значение
принадлежащих [a/2; b/2]
третьей четверти
среднегармоничес-кое значение
четных по номеру
последней трети
среднегеометричес-кое значение
нечетных по номеру
первой четверти
среднеарифметичес-кое значение
четных по значению
первой трети
среднеквадратичное значение
нечетных по значению
второй половины
среднегармоничес-кое значение
каждых третьих
последней четверти
среднегеометричес-кое значение
каждых вторых
второй четверти
Комментарии к задаче
Среднеарифметическое значение элементов заданного множества
А = {a1, a2, a3, …, an} вычисляется по формуле
Среднеквадратическое значение элементов заданного множества A = {a1, a2, a3, …, an} вычисляется по формуле
Среднегеометрическое значениененулевых элементов заданного множества A = {a1, a2, a3, …, an} вычисляется по формуле
где К-количество ненулевых элементов в множестве.
Среднегармоническое значениеположительных элементов заданного множества A = {a1, a2, a3, …, an} вычисляется по формуле
где К- количество положительных элементов в множестве.
Если все элементы множества имеют положительные значения, то справедливо условие
Ga <= Pa <= Sa.
Если множество пустое (А = ø) или в нём нет нужных элементов (к = 0), принять значение Sa, Qa, Pa или Ga равным нулю.
Часть 3. ОПРЕДЕЛЕНИЕ ПАРАМЕТРА МАССИВА
Постановка задачи:
“Определить <текст1> среди <текст2> элементов <текст3> массива”
Для каждого номера варианта постановка задачи уточняется с помощью табл. 3: по первой цифре номера варианта задания записывается <текст1>, по второй - <текст2>, по третьей - <текст3>.
Например, для 013 варианта постановка задачи имеет вид:
“Определить наибольший элемент среди нечетных по номеру элементов второй половины массива”
Таблица 3
Цифра варианта заданий
<текст1>
<текст2>
<текст3>
наибольший элемент
четных по номеру
второй четверти
минимальное значение
нечетных по номеру
второй трети
два наибольших элемента
каждых третьих
первой половины
элемент, самый близкий к заданному числу С
каждых вторых
второй половины
наименьший по модулю элемент
принадлежащих [a/2; b/2]
первой четверти
наименьший элемент
отрицательных
последней трети
максимальное значение
положительных
последней четверти
два наименьших элемента
ненулевых
третьей четверти
наибольший по абсолютной величине
четных по значению
первой трети
значение, по модулю самое близкое к заданному числу С
нечетных по значению
всего
Комментарий к задаче
Определить элемент массива – это значит найти его положение (индекс) в массиве и его значение. Если требуемому условию удовлетворяют несколько элементов, то нужно установить индекс и значение каждого из них.
Часть 4. УПОРЯДОЧЕНИЕ ЭЛЕМЕНТОВ МАССИВА
Постановка задачи:
“Упорядочить <текст1> элементы <текст2> массива по <текст3> значений”
Для каждого варианта задания постановка задачи уточняется по табл. 4: по первой цифре номера варианта записывается <текст1>, второй – <текст2>, по третьей – <текст3>.
Например, для 013 варианта постановка задачи имеет вид:
“Упорядочить нечетные по номеру элементы последней четверти массива по убыванию квадратов значений”
Таблица 4
Цифра варианта заданий
<текст1>
<текст2>
<текст3>
нечётные по номеру
последней трети
возрастанию
нечётные по значению
последней четверти
убыванию абсолютных
чётные по номеру
третьей четверти
возрастанию обратных
чётные по значению
первой трети
убыванию квадратов
отрицательные
второй четверти
возрастанию модулей обратных
принадлежащие
[a/2; b/2]
всего
убыванию
каждые третьи
второй половины
возрастанию абсолютных
каждые вторые
первой четверти
убыванию обратных
ненулевые
первой половины
возрастанию квадратов
положительные
второй трети
убыванию модулей обратных
Комментарий к задаче
Возможны два варианта решения задачи (назначает преподаватель):
1. Все элементы, удовлетворяющие заданным условиям, записываются в новый, вспомогательный массив, затем этот массив упорядочивается по заданному закону.
2. В исходном массиве упорядочиваются только элементы, удовлетворяющие заданным условиям, при этом остальные элементы своё положение сохраняют и вспомогательный массив не используется.
Для проверки правильности упорядочения всего массива или его части выводить все его элементы.
Работа №2.“ОБРАБОТКА ДВУХМЕРНЫХ МАССИВОВ”
Разработать программу получения и обработки двухмерного массива-матрицы. Индивидуальное задание может состоять из 1, 2, 3, 4 или 5 частей. Содержание каждой части определяется номером варианта, который назначается преподавателем в виде случайного трехзначного числа от 000 до 999.
Часть 1. ПОЛУЧЕНИЕ МАТРИЦЫ
Постановка задачи:
Вычислить элементы квадратной матрицы А по формуле
Функции f1 , f2 , f3 представлены в табл. 5.
Таблица 5
Цифра варианта
f1 (i , j)
f2 (i , j)
f3 (i , j)
max (i , j)
(n - i) !
(-1)i+j - 2
(-1)i+j
Конкретный вид формулы записывается так: по первой цифре варианта записывается функция f1, по второй цифре - f2, по третьей - f3.
Например, постановка задачи для 013 варианта имеет вид:
Вычислить элементы матрицы А по формуле
Часть 2. ПОЛУЧЕНИЕ ВЕКТОРА
Постановка задачи:
“Используя известную матрицу А, вычислить вектор Х, если xi (i=1,2,…n) вычисляется как <текст1> <текст2> элементов <текст3> матрицы А”
Для каждого варианта задание уточняется по табл. 6: по первой цифре варианта в постановку задачи записывается <текст1>, по второй – <текст2>, по третьей – <текст3>.
Например, для 013 варианта постановка задачи имеет вид:
“Используя известную матрицу А, вычислить вектор Х, если xi, (i=1,2,…,n) вычисляется как сумма отрицательных элементов (n-i+1)-го столбца матрицы”