В задачах анализа таблица задана, и требуется найти какие-то ее характеристики. Наиболее типичные базовые задачи анализа — нахождение суммы элементов таблицы, подсчет количества элементов, обладающих заданным свойством (например, положительных), определение минимального и максимального элементов.
Определение максимума и минимума иногда относят к задачам поиска. В предлагаемой классификации они, безусловно, относятся к задачам анализа, так как максимальный элемент является характеристикой таблицы в целом. Поиск здесь ведется по относительному признаку (больше других), и опознать элемент как максимальный можно только просмотрев всю таблицу.
В задачах поиска критерий должен быть абсолютным: рассмотрев элемент, мы должны немедленно определить, его ли мы ищем, и прекратить поиск, в случае положительного ответа.
Алгоритм вычисления суммы элементов массива.
Пример 1. Пусть дан массив A, состоящий из n элементов: a1, a2, a3, …, an. Нужно найти сумму элементов массива, т.е. S=a1+a2+a3+…+an.
Нахождение суммы есть реализация конструкции «Счетчик», т.е. последовательное нахождение суммы по формулам:
1)S=0 2) S=S+a1 S=S+a2 S=S+a3 … S=S+ai … S=S+an
Алгоритм вычисления суммы удобно организовать циклом, взяв за параметр цикла переменную i, которая меняется от 1 до n с шагом 1, и записав в цикле формулу S=S+ai один раз.
Фрагмент алгоритма: S=0; for i:=1 to n do S=S+a[i];
Алгоритм нахождения среднего арифметического элементов с определенным качеством.
Пример 2. Пусть дан массив A, состоящий из n элементов: a1, a2, a3, …, an. Нужно найти сумму четных значений элементов массива,.
program a2;
var
i,n,s,k:integer;
sr:real;
a:array[1..100]of integer;
begin
readln(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do
if a[i] mod 2=0 then begin
s:=s+a[i];
k:=k+1;
end;
if k=0 then writeln('NO')
else begin
sr:=s/k;
writeln(sr:5:2)
end;
end.
Алгоритм нахождения индексов каждого элемента массива, значение которого равно нулю.
Пример 3. Пусть дан массив A, состоящий из n элементов: a1, a2, a3, …, an. Найти индексы всех элементов массива, значение которых равно нулю.
program MAS2_F6;
var
a:array[1..100] of integer;
i,n:integer;
Begin
readln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n do
if a[i]=0 then write(i,’ ‘);
End.
Алгоритм нахождения максимального элемента массива и его индекса.
Вводная задача: Даны три целочисленные переменные а, в, с. Составить фрагмент программы поиска максимального из трех чисел.
Решение: Пусть а, в, с — вводимые числа, m — максимальное из них. Сначала предположим, что а — максимальное из чисел (т.е. m: =а ). Затем сравним значение предполагаемого максимума со значениями переменных b и с. Если значение m окажется меньше, чем значение очередной переменной, то изменим значение максимума:
Begin
Writeln('введите значения а, Ь, с');
Readln(a,b,с);
m: =а;
If m<b Then m:=b;
If m<c Then m:=с;
Writeln('максимальное число - ',m)
End.
Пример 3 Дан массив а, состоящий из 10 элементов. Составить программу поиска максимального элемента массива.
Решение: Используем идею решения предыдущей задачи. Перед началом поиска выберем в качестве максимального первый элемент массива: m:=а [1]. Затем каждый элемент массива сравним со значением переменной m. Если он окажется больше, то изменим значение m. После сравнения со всеми элементами массива переменная m содержит значение максимального элемента массива.
Begin
m:=а[1];
For i:=2 To 10 Do
If m<a[i] Then m:=a[i];
Writeln('максимальный элемент массива - ', m);
End;
Нахождения максимального элемента массива и его индекса.