ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ
№7. ФОРМИРОВАНИЕ МАССИВА ИЗ ЭЛЕМЕНТОВ ДРУГОГО
МАССИВА УДОВЛЕТВОРЯЮЩИХ ЗАДАННОМУ УСЛОВИЮ
ПОСТАНОВКА ЗАДАЧИ: Требуется из данного массива А, состоящего из N элементов, выбрать элементы, удовлетворяющие заданному ( пусть А(i)>T ), и сформировать из них массив B.
Исходный массив А: 4 6 8 2 23 1 9 Условие: A(i)>=8
Новый массив B: 8 23 9
Особенность решения: Индексы элементов массивов A и B не совпадают,
так как не все элементы массива A включаются в массив B.
Введем переменную, формирующую индексы и являющуюся счетчиком
элементов нового массива.
Program Massiv_po_Uslowiu;
Uses crt;
. . .
procedure Mass_Usl;
begin
write('Введите параметр условия: ');
readln(t);
k:=0; {k- счетчик найденых элементов }
for i:=1 to n do
if a[i]>=t then
begin
k:=k+1;
b[k]:=a[i];
end;
end;
Begin
ClrScr;
n:=20;
Input; { заполнение исходного массива A }
ClrScr;
Print(а, n); { печать исходного массива A }
writeln;
Mass_Usl; { формирование массива по условию }
Print(b, k); { вывод на экран нового массива B }
writeln;
Readkey;
End.
З А Д А Н И Я:
1. Набрать и исполнить программу.
2. Изменить условие.
3. Вывести на экран сообщение о количестве найденных элементов.
4. Найти среднее арифметическое элементов нового массива.
Задача
Найти максимальный элемент численного массива.
Алгоритм решения задачи:
Значения, составляющие массив, могут быть получены из разных источников: путем вызова функции random, ввода значений пользователем, считывания из файла.
В программе ниже используется первый вариант.
В задачах подобного рода (поиск максиму или минимума) может быть поставлена цель, найти только 1) индекс элемента, 2) только значение или 3) и то и другое.
В программе ниже используется третий вариант.
Неплохо бы, чтобы при запуске программы весь массив выводился на экран. В этом случае пользователь может оценить правильность работы программы.
Program Max;
Uses crt;
const m = 20;
var
arr: array[1..m] of byte;
max_num, max_index: byte;
i: byte;
begin
randomize;
for i := 1 to m do begin
arr[i] := random(100);
write (arr[i]:3);
end;
max_index := 1;
max_num := arr[1];
for i := 2 to m do
if arr[i] > max_num then begin
max_index := i;
max_num := arr[i];
end;
writeln;
writeln ('Max = ',max_num);
writeln ('position: ', max_index);
readln;
end.