Таблица П3.4
Школьный алгоритми-
ческий язык
Язык Бейсик
Язык Паскаль
цел n
n := 10
N = 10
DIM A(1 TO N) AS ...
const n = 10;
var a: array [1..n] of ...;
Приложение 3. Работа с одномерными числовыми массивами
247
Это позволит при необходимости быстро менять размер массива — достаточно бу-
дет изменить только одно значение в начале программы.
Смысл остальных величин, используемых в приведенных фрагментах, можно легко
определить по их именам.
П3.30. Нахождение суммы всех элементов массива.
Для решения задачи необходимо последовательно обратиться ко всем эле-
ментам массива и учесть их значения в уже рассчитанной ранее сумме.
Удобно использовать оператор цикла с параметром:
сумма := 0
нц для i от 1 до n
сумма := сумма + а[i]
кц
|Вывод результата или использование его в расчетах
...
П3.31. Нахождение суммы элементов массива с заданными свойствами (удовле-
творяющих некоторому условию).
Здесь отличие в том, что добавлять значение элемента массива к уже рас-
считанной ранее сумме следует только тогда, когда элемент обладает за-
данными свойствами:
сумма := 0
нц для i от 1 до n
|Если элемент обладает заданными свойствами
если <условие>
то
|Учитываем его значение в сумме
сумма := сумма + а[i]
все
кц
|Вывод результата или использование его в расчетах
...
где
<условие>
— заданное условие для суммирования. Это условие может
определяться значением элемента массива
а[i]
или/и его индексом
i
.
Приложения
248
П3.32. Нахождение количества элементов массива с заданными свойствами.
Особенность данной задачи в том, что в случае, когда элемент обладает за-
данными свойствами (удовлетворяет некоторому условию), искомое коли-
чество увеличивается на 1:
количество := 0
нц для i от 1 до n
|Если элемент обладает заданными свойствами
если <условие>
то
|Учитываем его в искомом количестве
количество := количество + 1
все
кц
|Вывод результата или использование его в расчетах
...
В данном случае условие в команде
если
(в условном операторе) определя-
ется значением элемента массива
а[i]
или одновременно значениями
а[i]
и
i
. Количество элементов, зависящих только от значения индекса
i
, может
быть найдено без использования оператора цикла. (Убедитесь в этом!)
П3.33. Нахождение среднего арифметического значения элементов массива с за-
данными свойствами.
Для нахождения искомого значения необходимо определить сумму элемен-
тов массива с заданными свойствами и их количество. Такие две задачи мы
уже решили ранее. Здесь их можно объединить в одном операторе цикла:
количество := 0
нц для i от 1 до n
|Если элемент обладает заданными свойствами
если <условие>
то
Учитываем его значение в сумме
сумма := сумма + а[i]
и учитываем этот элемент в количестве
количество := количество + 1
все
кц
|Подсчет результата
среднее_арифметическое := сумма/количество
...
Приложение 3. Работа с одномерными числовыми массивами
249
Обратите внимание на то, что многократно определять значение
сред-
нее_арифметическое
в "теле" условного оператора (команды
если
) необ-
ходимости нет. Это можно сделать один раз после окончания оператора
цикла. Однако может оказаться, что чисел, удовлетворяющих заданному
условию, в массиве не окажется. В этом случае при расчете будет иметь ме-
сто деление на ноль, что недопустимо. Правильное оформление:
...
|Подсчет и вывод результата
если количество > 0
то
среднее_арифметическое := сумма/количество
вывод нс, "Среднее арифметическое: ", среднее_арифметическое
иначе
вывод нс, "Чисел, удовлетворяющих условию, в массиве нет"
все
П3.34. Изменение значений элементов массива с заданными свойствами.
нц для i от 1 до n
если <условие>
|Если элемент обладает заданными свойствами
то
|Меняем его значение
а[i] := ...
все
кц
П3.35. Вывод на экран элементов массива с заданными свойствами
вывод нс, "Элементы массива, удовлетворяющие условию: "
нц для i от 1 до n
|Если элемент обладает заданными свойствами
если <условие>
то
|Выводим его
вывод а[i], " "
все
кц
Приведенный фрагмент имеет один недостаток — если в массиве нет эле-
ментов, удовлетворяющих заданному условию, то первая команда
вывод
будет излишней. Необходимо предварительно определить количество чисел
Приложения
250
в массиве с заданными свойствами (см. задачу П3.32), а затем оформить
фрагмент в виде:
если количество > 0
то
вывод нс, "Элементы массива, удовлетворяющие условию: "
нц для i от 1 до n
если <условие>
то
вывод а[i], " "
все
кц
иначе
вывод нс, "Чисел, удовлетворяющих условию, в массиве нет"
все
П3.36. Нахождение номеров (индексов) элементов массива с заданными свойства-
ми.
вывод нс, "Номера элементов массива, удовлетворяющих условию: "
нц для i от 1 до n
если <условие>
то
вывод i, " "
все
кц
Здесь также можно учесть замечание, сделанное при решении предыдущей
задачи.
П3.37. Поиск индекса элемента массива, равного некоторому числу.
Эту задачу можно рассматривать как частный случай задачи П3.36.
В приведенном далее фрагменте программы величина значение — это чис-
ло, индекс которого (
искомый_индекс
) ищется.
нц для i от 1 до n
если а[i] = значение
то
искомый_индекс := i
все
кц
|Вывод результата или использование его в расчетах
...
Приложение 3. Работа с одномерными числовыми массивами
251
Прежде чем обсуждать представленный вариант, предлагаем читателям от-
ветить на вопрос: индекс какого элемента будет найден, если в массиве
окажутся несколько элементов, значение которых равно искомому?
Нетрудно заметить, что при таком оформлении в случае, если числа
значе-
ние
в массиве нет, результат будет неправильным. Чтобы учесть в про-
грамме возможность такого случая, необходимо изменить фрагмент сле-
дующим образом:
искомый_индекс := 0
нц для i от 1 до n
если а[i] = значение
то
искомый_индекс := i
все
кц
|Вывод результата
если искомый_индекс > 0
то
вывод нс, "Индекс этого элемента: ", искомый_индекс
иначе
вывод нс, "Такого числа в массиве нет"
все
Достарыңызбен бөлісу: |