Автор работы: Пользователь скрыл имя, 21 Декабря 2011 в 18:27, контрольная работа
Заменить отрицательные элементы массива их абсолютными величинами.
Мы уже рассматривали подробно алгоритм нахождения максимального элемента массива и его номера. Покажем, как выполняется вторая часть алгоритма (сдвиг элементов массива) для тестового примера.
Тест
Данные | Результат | |
N = 8 | A = (6, 3, 7, 11, 2, 8, 1, 5) | A = (6, 3, 7, 2, 8, 1, 5) N = 7 |
В
массиве номер наибольшего
i | Массив |
4; 4 ≤ 7? Да | А = (6, 3, 7, 2, 2, 8, 1, 5) |
5; 5 ≤ 7? Да | А = (6, 3, 7, 2, 8, 8, 1, 5) |
6; 6 ≤ 7? Да | А = (6, 3, 7, 2, 8, 1, 1, 5) |
7; 7 ≤ 7? Да | А = (6, 3, 7, 2, 8, 1, 5, 5) |
8; 8 ≤ 7? Нет | Конец цикла. n = 8 – 1 = 7 |
Пример 3.15. Решить предыдущую задачу, считая, что максимальных элементов может быть несколько.
Дано n – размер массива; A[n] – массив вещественных чисел.
Найти: Новый массив А размера n – k, где k – количество удаленных элементов массива.
Когда необходимо удалять несколько элементов, то это лучше делать с конца массива, так как иначе нужно будет снова возвращаться к элементу, который только что удаляли. Эта проблема возникает в том случае, когда подряд идут два максимальных элемента: если первый удалить, то на его место снова встанет максимальный элемент. Просматривать массив с конца можно при помощи цикла с параметром, который имеет следующий вид:
нц
Для i от iкон до iнач шаг –1 повторять
<тело цикла>
кц
Значение переменной i уменьшается на единицу, начиная от iкон до iнач.
Кроме того, номер максимального элемента запоминать не будем, а просмотрим массив с конца, и если текущий элемент имеет максимальное значение, то удалим его, при этом значение счетчика удаленных элементов k будем увеличивать на 1. Для решения этой задачи фрагмент алгоритма для нахождения максимального элемента выглядит так:
Amax = a[1];
нц
Для i от 2 до n повторять {Нахождение максимального элемента}
Если a[i] > Amax то Amax = a[i];
Все если
кц
Просматриваем элементы, удаляем элемент, равный максимальному значению, подсчитываем количество удаленных элементов.
нц
Для i от n до 1 шаг –1 повторять Если a[i] = Amax то a[i] = a[i + 1] k = k + 1 Все если кц n = n – k |
1. Удалите все отрицательные элементы массива.
2. Удалите все элементы, большие данного числа А (значение числа А вводится с клавиатуры).
3. Удалите все четные элементы, стоящие на нечетных местах.
4. Удалите все повторяющиеся элементы, оставив их первые вхождения, то есть в массиве должны остаться только различные элементы.
5. Удалите последний четный элемент массива.
6. Удалите все элементы, кратные 3 или 5.