Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК ОАиП.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.14 Mб
Скачать

1. Стандартные операции с массивами

Массивы предусмотрены в подавляющем большинстве языков програм­мирования и используются в широком круге задач. При этом все-таки имеют­ся некоторые стандартные операции с массивами, которые часто применяются вне зависимости от функциональной направленности решаемой задачи. Это операции поиска в массиве или его части минимального и (или) максимально­го значения, а также упорядочение массива или его части - выстраивание эле­ментов некоторым образом, обычно просто по возрастанию или убыванию.

Имеется большое разнообразие задач на одномерные массивы. Как и все задачи вообще, условно их можно разделить на три вида:

  1. задачи, решаемые в «одно соображение»;

  2. стандартные задачи;

  3. задачи, решения которых требуют знания вспомогательных алгорит­мов, специальных методов и приемов.

Очевидно, что без умения решать задачи первых двух видов невозможно ре­шать нестандартные задачи. Рассмотрим несколько примеров задач первого вида.

1. В массиве а каждый элемент равен 0 или 1. Заменить все нули едини­цами и наоборот.

Решение: достаточно одного оператора присваивания a[i] : = 1 - a[i] в те­ле цикла.

2. В массиве каждый элемент равен 0, 1 или 2. Переставить элементы массива так, чтобы сначала располагались все 0, затем все 1 и, наконец, все 2. Дополнительного массива не заводить.

Решение: можно не переставлять элементы массива, а подсчитать коли­чества 0, 1,2 и заполнить массив заново требуемым образом.

3. Даны два n-элементных массива х и у одного типа. Обменять места­ми все xi| и yi (i = 1,..., n), не используя промежуточные величины.

Решение: обмен можно выполнить в цикле для всех i от 1 до n с помощью серии из трех операторов присваивания: x[i] : = x[i] + y[i]; y[i] : = x[i] - y[i]; x[i] : = x[i]-y[i].

Перечислим стандартные (типовые) задачи на одномерные массивы:

  1. нахождение наибольшего (наименьшего) элемента;

  2. суммирование элементов (безусловное и условное);

  3. подсчет (замена) элементов, удовлетворяющих заданному условию;

  4. поиск заданного элемента:

а) в неупорядоченном массиве;

б) в упорядоченном массиве;

  1. определение заданного расположения элементов;

  2. удаление элемента, включение элемента в заданную позицию;

  3. переразмещение (инвертирование, циклический сдвиг) элементов;

  4. случайная выборка элементов (с повторениями и без повторений);

  5. слияние двух упорядоченных массивов в упорядоченный массив;

  6. сортировка массива (простые методы).

Задача 4

В некоторых видах спортивных состязаний выступление каждого спорт­смена оценивается независимо несколькими судьями. Затем из всей совокуп­ности оценок удаляются наиболее высокая и низкая, а для оставшихся оценок вычисляется среднее арифметическое, которое и идет в зачет спортсмену. Ес­ли наиболее высокую оценку выставило несколько судей, то удаляется только одна такая оценка. Аналогично поступают с наиболее низкими оценками.

Дано натуральное число п, положительные действительные числа ai,..., а„ (п > 3). Считая, что числа Э|,..., а„ - это оценки, выставленные судьями од­ному из участников соревнований, определить оценку, которая пойдет в зачет этому спортсмену.

Program LAB11_4;

Const n= 10;

А : Array [l..n] of Real = (5.4,5.6,5.3, 5.8,5.4, 5.5, 5.5,5.6,5.0, 5.7);

Var i: 1. .n;

min, max, sum: Real;

BEGIN {1}

min: = a[l];

max : = a[l];

sum : = a[l];

for i: = 2 to n do

begin {2}

sum : = sum + a[i];

if a[i] > max Then max : = a[i];

if a[i] < min Then min : = a[i];

end; {2}

WriteLn('Оценка в зачет:', (sum - max - min)/(n - 2): 2 : 2);

ReadLn;

END. {1}

Пояснения к задаче 4

Числа-оценки а1 ,..., аn будем считать элементами массива а. Опишем данные в блоке Const как простую (n) и сложную (массив а) константы. По­сле этого они доступны и хранятся внутри программы. Одномерные массивы-константы задаются перечислением их элементов в круглых скобках, что рав­носильно заданию значения присваиванием: а[1]: = 5.4,..., а[10]: = 5.7.

Пусть max - одна из наивысших оценок, min - одна из самых низких оценок, a sum - сумма всех n (n > 3) оценок, выставленных судьями. Тогда искомую оценку найдем по формуле (sum - max - min)/(n - 2).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]