Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие для учеников .doc
Скачиваний:
12
Добавлен:
18.12.2018
Размер:
2.27 Mб
Скачать

Begin {Считываем очередную строку}

Init3(А);

{Обращение к процедуре заполнения массива}

Print(A);

{Обращение к процедуре вывода}

Readln(F);

End;

Close(F); Readln;

End.

Четвертый способ − описание одномерного массива − типизированной константы:

Const

digit: array[0..9] of char=

('0', '1', '2', '3', '4', '5',

'6', '7', '8', '9');

DayOfWeek: array[0..6] of String =

('понедельник', 'вторник', 'среда',

'четверг', 'пятница', 'суббота');

Chislo: array[0..9] of byte=(0, 1, 2, 3,

4, 5, 6, 7, 8, 9).

Элемент массива может быть любого типа, кроме файлового. Напомним, что типизированные константы являются переменными, которым начальное значение присваивается в начале выполнения программы (см. §26).

§36. Работа с элементами массива (разбор на примерах)

При работе с элементами массива можно выделить несколько видов задач.

Нахождение суммы

(или произведения) элементов

Такая задача была рассмотрена выше. Часто встреча­ются различные модификации этой задачи, например, тре­буется найти сумму элементов с заданным свойством.

Пример

Найти сумму элементов, кратных заданному числу.

Решение

Изменим функцию Sum из программы Example_89. Будем суммировать не все элементы, а только те, кото­рые удовлетворяют данному условию, то есть только те, которые делятся нацело на заданное число (остаток от деления на данное число равен 0).

Program Example_92;

Function Sum(m: myarray): Integer;

Var i, s, k: Integer;

Begin

Writeln('Введите число');

Readln(k);

s:=0; {Начальное значение суммы}

For i:=1 To n Do {Нахождение суммы}

If m[i] Mod k=0 Then s:=s+m[i];

{Если элемент кратен k, то прибавляем его

к сумме}

sum:=s;

End;

Остальную часть программы Example_89 можно ос­тавить без изменений.

Нахождение номеров элементов,

обладающих заданным свойством

Пример

Найти номера четных элементов.

Решение

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

Program Example_93;

Procedure Solve (m: myarray);

Var i: Integer;

Begin

For i:=1 To n Do

If m[i] Mod 2=0 Then Write(i:5);

End;

Нахождение количества элементов,

обладающих заданным свойством

Пример

Найти количество положительных и отрицательных элементов в данном массиве.

Решение

Опишем процедуру, которая имеет три параметра − массив и два счетчика, первый − для положительных элементов, второй − для отрицательных, элементы, рав­ные нулю, учитывать не будем.

Program Example_94;

Procedure Quantity(m: myarray;

Var k1, k2: Integer);

Var i: Integer;

Begin

k1:=0; k2:=0;

For i:=1 To n Do

If m[i]>0 Then Inc(k1)

Else If m[i]<0 Then Inc(k2);

End;

Смотрите программу Example_89. В разделе описания переменных Var дописать: pol, otr: Integer;. В основной программе записать обращение к процедуре Quantity(a,pol,otr).

Есть ли в данном массиве элементы с

данным свойством, или найти первый

(последний) элемент, отвечающий

заданным условиям

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

Пример 1

Есть ли отрицательный элемент в массиве?

Решение

Начинаем просматривать массив с первого элемен­та (i=1). Пока не просмотрен последний (i<=n) и не найден отрицательный (m[i]>=0), будем перехо­дить к следующему (inc(i)). Таким образом, мы закончим просмотр в одном из двух случаев: первый − просмотрели все элементы и не нашли отрицательно­го, тогда i>n, второй − нашли нужный, при этом i<=n. Опишем функцию, значение которой истина (True), если в массиве есть отрицательный элемент, и ложь (False), если его нет.

Program Example_95;

Function Controll (m: myarray): Boolean;

Var i: Integer;

Begin

i:=1;

While (i<=n) And (m[i]>=0) Do Inc(i);

Controll:=(i<=n)

End;