- •Var имя массива: имя типа массива;
- •2) Имя массива: array[начальное значение индекса .. Конечное значение индекса] of базовый тип;
- •Способы заполнения одномерных массивов
- •Вывод одномерных массивов
- •Обработка одномерных массивов
- •Нахождение суммы элементов массива
- •Нахождение элементов массива, удовлетворяющих заданному условию.
- •Нахождение количества четных элементов массива
- •Нахождение min (max) элементов массива и их индексов
- •Поиск первого (последнего) по порядку элемента, удовлетворяющего какому-то условию
- •Сортировка элементов массива
- •Задания для самостоятельного выполнения
- •1. Написать программу для решения предложенной задачи:
- •2. Написать программу для решения предложенной задачи:
- •3. Написать программу для решения предложенной задачи:
- •Контрольные вопросы
- •Рекомендуемая литература
- •Содержание
- •Программирование в интегрированной среде Turbopascal. Обработка одномерных массивов
- •654007, Г. Новокузнецк, ул. Кирова, 42
Нахождение суммы элементов массива
Сумму элементов массива можно подсчитать по формуле SUM=SUM+A[J], первоначально задав SUM=0.
SUM:=0;
For J: = 1 to N do SUM:=SUM+A[J];
Рисунок 2 – Алгоритм нахождения суммы элементов массива
Количество элементов массива можно подсчитать по формуле К=К+1, первоначально задав К=0. Произведение элементов массива можно подсчитать по формуле РR = РR*А[J], первоначально задав РR=1.
PR:=1;
For J:=1 to N do PR:=PR*A[J];
Нахождение элементов массива, удовлетворяющих заданному условию.
Выборочная обработка тех элементов массива, которые удовлетворяют условию, проводится по общему принципу, изображенному участком блок-схемы. От обычных алгоритмов, например, суммирования, эта схема отличается наличием проверки условия перед обработкой очередного элемента. Если элемент этому условию не удовлетворяет, он не обрабатывается, а пропускается.
Рисунок 3 – Алгоритм обработки элементов массива, удовлетворяющих заданному условию
Нахождение количества четных элементов массива
Подсчитать количество четных чисел в одномерном целочисленном массиве можно, используя следующую программу:
Program chet;
Var I,N,К: integer; A:array[1..50] of integer;
Begin
Write(‘Введите количество элементов массива’);
ReadLn(N);
For i:=1 to N do
begin Write(‘A[’,i:2, ‘]=’);
ReadLn(A[i]); end;
К:=0; {переменная, в которой будет храниться количество четных чисел}
For i:=1 to N do if A[i]mod2=0 then К:=К+1;
{проверка на четность}
WriteLn(‘Количество четных чисел:’,К:2);
ReadLn;
End.
Нахождение min (max) элементов массива и их индексов
Поиск в массиве рассмотрим на примере задачи нахождения наименьшего элемента и его индекса. При поиске максимального или минимального элемента первым действием служит поиск первого в массиве элемента, удовлетворяющего условию. Его значение принимается за предполагаемый искомый максимум (минимум). Если элементов, удовлетворяющих условию, в массиве нет, проводить поиск не имеет смысла.
Program min;
Var I,N,NM:integer; M:real;
A:array[1..50] of real;
Begin
Write(‘Введите количество элементов массива’);
ReadLn(N);
For I:=1 to N do
begin
Write(‘A[’,i:2,‘]=’);
ReadLn(A[i]);
end;
M:=A[1]; NM:=1; {переменным, в которых будут храниться минимум и его индекс, присваиваем начальные значения}
For i:=2 to N do
If A[1]<M Then begin M:=A[i]; NM:=i; end;
WriteLn(‘Минимальный элемент:’,М:6:2,‘, его номер:’,NM:2);
ReadLn;
End.
Поиск первого (последнего) по порядку элемента, удовлетворяющего какому-то условию
Для запоминания индекса нужного элемента вводят дополнительную переменную и вначале присваивают ей значение 0. Затем просматривают элементы массива, начиная с первого (последнего) и, встретив элемент, удовлетворяющий условию, присваивают значение индекса элемента упомянутой переменной. Сразу после этого надо прекратить выполнение цикла, что можно сделать с помощью оператора перехода на метку, помечающую следующий за циклом оператор программы (в нижеследующем тексте фрагмента программы 1 – метка).
…
NOM:= 0;
For J:= 1 to N do
If <условие> then
begin
NOM:= J; goto 1;
end;
1: …
Оператором, помеченным меткой 1, может быть вывод на экран значения NOM. Если оно равно 0, то элементов, удовлетворяющих условию, в массиве нет.
Для решения этой задачи более эффективным является использование цикла с постусловием, так как число повторений заранее не известно:
…
NOM:=0; J:=0;
Repeat
J:=J+1;
if <условие> then NOM:=J;
Until <условие>;
…
