Д. М. Златопольский Санкт-Петербург «бхв-петербург» 2011 удк



Pdf көрінісі
бет255/271
Дата04.02.2022
өлшемі7,99 Mb.
#24830
1   ...   251   252   253   254   255   256   257   258   ...   271
Байланысты:
Златопольский Сборник задач по прогр

Таблица  П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 
  то 
   вывод нс, "Индекс этого элемента: ", искомый_индекс 
  иначе 
   вывод нс, "Такого числа в массиве нет" 
все 


Достарыңызбен бөлісу:
1   ...   251   252   253   254   255   256   257   258   ...   271




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет