Автор работы: Пользователь скрыл имя, 21 Декабря 2011 в 18:27, контрольная работа
Заменить отрицательные элементы массива их абсолютными величинами.
Пример 3.8. Заменить отрицательные элементы массива их абсолютными величинами.
Дано: n – размер массива, массив А = (a1, a2, … , an).
Найти массив того же размера, в котором отрицательные числа будут заменены их модулями.
Математическая модель:
Пусть k1 = 0 и k2 = 0. Если а[i] < 0, то а[i] = –а[i]. Вычисления повторяются, пока не будут просмотрены все числа массива.
Приведем фрагмент алгоритма.
нц
Для i от 1 до n повторять
Если a[i] <0 то a[i] = –a[i]
Все если
кц
нц
Для i от 1 дo n повторять {Печать элементов массива}
Вывод a[i]
кц
Тест
Данные | Результат | |
N= 9 | A=(–1, 10, 1, –6, –5, 12, 36, –15, –21) | A=(1, 10, 1, 6, 5, 12, 36, 15, 21) |
Пример 3.9. Если очередной элемент массива четный, то прибавить к нему первый, если нечетный – прибавить последний. Первый и последний элементы массива не изменять.
Дано: n – размер массива, массив А = (a1, a2, … , an).
Найти массив того же размера, в котором к четному элементу будет добавлен первый, а к нечетному – последний.
Математическая модель:
Рассмотрим все элементы массива, кроме первого и последнего. Если а[i] – четный элемент, то а[i] = а[i] + а[1], иначе а[i] = а[i] + а[n]. Процесс повторяется, пока не будут просмотрены все числа массива. Заметим, что число является четным, если оно делится на 2 без остатка.
Приведем фрагмент алгоритма.
нц
Для i от 2 до n – 1 повторять
Если a[i] Mod 2 = 0 То a[i] = a[i] + a[1]
Иначе a[i] = a[i] + a[n]
Все если
кц
Пример 3.10. Дан первый член арифметической прогрессии и ее разность. Записать в массив первые n членов прогрессии.
Обозначим m1 – первый элемент прогрессии, k – ее разность, n – размер массива.
Дано: m1, k, n.
Найти массив A[n].
Математическая модель:
При i = 1, a[1] = m1, i-й элемент массива можно найти по следующему правилу: a[i] = a[i – 1] + k, здесь i меняется от 2 до n.
Приведем фрагмент алгоритма.
a[1] = m1
нц
Для i = 2 до n повторять
a[i] = a[i–1] + k
кц
Пример 3.11. Даны два одномерных массива – А и В. Найти их скалярное произведение.
Дано: n – размер массива, А, В – массивы размера n.
Найти S – скалярное произведение двух массивов.
Математическая модель:
Скалярным произведением двух массивов одинаковой размерности называется сумма произведений соответствующих элементов:
a[1] × b[1] + a[2] × b[2] + … + a[n] × b[n], где n – количество элементов в массивах.
Фрагмент алгоритма:
s = 0
нц
Для i от 1 до n повторять
s = s + a[i] * b [i]
кц
Тест
Данные | Результат | |
N = 5 | A = (3, –1, 10, 1, –6,); B =(2, 4, –3,5,–4) |
S = 3×2 –1×4 –10×3+1×5 +6×4 = 1 |
1. Измените знак у максимального по модулю элемента массива.
2. Замените все четные элементы массива их квадратами, а нечетные элементы – удвойте.
3. Вычтите из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставьте без изменения.
4. К четным элементам массива прибавьте произвольное число А, а из элементов с четными номерами вычтите произвольное число В.
5. Отрицательные элементы массива возведите в квадрат.
6. Даны два целочисленных массива, состоящих из одинакового числа элементов. Получите третий массив той же размерности, каждый элемент которого равен наибольшему из соответствующих элементов данных массивов.
Например, даны два массива – А и В, состоящие из пяти элементов. Получим массив С, тоже состоящий из пяти элементов. Первый элемент этого массива равен большему из первых элементов массива А и В, второй – большему из вторых элементов массивов – и так далее.
7. Дан первый член геометрической прогрессии и ее знаменатель. Найдите и запишите в массив первые n членов этой прогрессии.
8. Даны два массива. Найдите среднее арифметическое элементов каждого и сравните эти значения.
Пример 3.12. В массиве поменять местами два соседних элемента с номерами k1 и k2.
Номера элементов, которые меняются местами, должны быть известны.
Дано: n – размер массива; A[n] – массив вещественных чисел; k1, k2 – номера элементов, подлежащих обмену.
Найти новый массив А размера n.
Фрагмент алгоритма решения задачи выглядит так:
x = A[k1]; A[k1] = A[k2]; А[k2] = x.
Здесь х – вспомогательная переменная, в которой сохраняется первоначальное значение элемента массива A[k1].
Тест
k1=2; k2 = 6
Данные | Результат | |
N=9 | A=(3, 1, 10, 1, 6, 5, 12, 36, |
A = (3, 5, 10, 1, 6, 1, 12, 36, –15) |
Усложним задачу.
Пример 3.13. Дан одномерный массив A, состоящий из 2n элементов. Поменять местами его половины.
Дано: 2 ´ n – размер массива; A[n] – массив вещественных чисел.
Найти новый массив А размера 2 ´ n.
Словесное описание алгоритма.
Пусть
массив А состоит из 10 элементов, тогда
n = 5. Из массива
А(1, 12, 23, 3, 7, 13, 27, 6, 9, 11) нужно получить
массив А(13, 27, 6, 9, 11, 1, 12, 23, 3, 7). Мы должны
поменять местами элементы с номерами
1 и 6, 2 и 7, 3 и 8, 4 и 9, 5 и 10, иными словами 1
и n + 1, 2 и n +2, 3 и n + 3, 4 и n + 4, 5
и n + 5. Можно заметить, что элемент
с номером i меняется местами с элементом
с номером n + i. Поэтому, используя фрагмент
алгоритма, приведенный в примере 3.12, можно
применить такой цикл:
нц
Для i от 1 до n повторять
x = A[i]
A[i] = A[n + i]
A[n + i] = x
кц
1. Дан одномерный массив. Поменяйте местами:
а) первый и максимальный элементы массива;
б) второй и минимальный элементы массива;
в) первый и последний отрицательный элементы массива.
2. Дан одномерный массив А, состоящий из 2n элементов. Поменяйте местами его половины следующим образом: первый элемент поменять местами с последним, второй – с предпоследним и так далее.
3. Дан одномерный массив В, состоящий из 2n элементов. Переставьте его элементы по следующему правилу:
а) b[n + 1], b[n + 2], …, b[2n], b[1], b[2], …, b[n];
б) b[n + 1], b[n + 2], …, b[2n], b[n], b[n – 1],…, b[1];
в) b[1], b[n + 1], b[2], b[n + 2], …, b[n], b[2n];
4. Дан одномерный массив. Переставьте в обратном порядке элементы массива, расположенные между минимальным и максимальным элементами.
Пример 3.14. Удалить из массива, в котором все элементы различны, наибольший элемент. После удаления массив уплотнить, сдвинув все следующие за ним элементы, влево.
Дано: n – размер массива; A[n] – массив вещественных чисел.
Найти новый массив А размера n – 1.
Для решения задачи необходимо:
1) найти номер k наибольшего элемента массива. Эта задача решена в примере 3.5.
2) сдвинуть все элементы массива, начиная с k–го на один элемент влево.
Для того чтобы разработать алгоритм, рассмотрим конкретный пример. Пусть дан одномерный массив, состоящий из 10 элементов: А(6, 3, 7, 11, 2, 8, 1, 5). Номер наибольшего элемента равен 7 (k = 7), то есть, начиная с седьмого элемента, будем сдвигать элементы на один влево: седьмому элементу присвоим значение восьмого, восьмому элементу присвоим значение девятого, а девятому присвоим значение десятого элемента. На этом сдвиг заканчивается. Таким образом, сдвиг начинается с k–го элемента и заканчивается элементом с номером n – 1, где n –количество элементов в массиве. После этого количество элементов в массиве станет на один элемент меньше. Массив примет вид: А(6, 3, 4, 7, 11, 8, 1, 5).
Фрагмент алгоритма решения задачи:
Нахождение
максимального элемента и его номера
max = а[1] k = 1 нц Для i от 2 до n повторять Если а[i] > max то max = а[i] k = i Все если кц Сдвиг элементов массива нц Для i от = k до n – 1 повторять а[i] = а[i+1] кц Уменьшение количества элементов массива n = n – 1 |