Методы обработки массивов
Массивы — наиболее часто применяемый тип данных при обработке большого количества информации, разного рода статистических данных и т.д. Это объясняется не только удобством хранения информации в памяти компьютера в виде массива, сколько возможностью легко производить различного рода обработку массивов.
В настоящей главе описаны наиболее простые и часто встречающиеся ситуации при обработке информации в массивах. Все они достаточно просты, и поэтому снабжены не подробными комментариями, а конкретными примерами. Рекомендуем вам самостоятельно разобрать каждый из предложенных примеров. Не переходите к следующему разделу (примеру программы), если вам не понятно назначение каждой строки предыдущего примера программы.
Сумма элементов массива
Пример программы, которая сначала вводит 30 действительных чисел, организовывает их хранение в массиве, определяет сумму элементов этого массива и выводит результат на экран монитора.
Procedure TForm1.Button1Click(Sender:TObject);
Type mas=array[1..30] of Real; {Декларация массива}
Var a:mas;
i:Integer; {Параметр цикла For}
s:real; {Сумма элементов}
Begin
For i:=1 to 30 do {Заполнение массива}
a[i]:=StrToFloat(StringGridN.Cells[i,1]);
s:=0; {Обнуление счетчика суммы}
For i:=1 to 30 do {Вычисление суммы}
s:=s+a[i];
LabelN.Caption:='S= '+FloattoStr(s);
End;
Число положительных элементов массива
Пример программы, которая сначала вводит 30 действительных чисел, организовывает их хранение в массиве, определяет количество положительных элементов и выдает сообщение на экран.
Procedure TForm1.Button1Click(Sender:TObject);
Type mas=array[1..30] of Real; {Декларация массива}
Var a:mas;
i:Integer; {Параметр цикла For}
n:Integer; {Счетчик положительных чисел}
Begin
For i:=1 to 30 do {Заполнение массива}
a[i]:=StrToFloat(StringGridN.Cells[i,1]);
n:=0; {Обнуление счетчика положительных элементов}
For i:=1 to 30 do {Вычисление количества положительных элементов}
If a[i]>=0 then n:=n+1;
LabelN.Caption:='Последовательность содержит '+FloattoStr(s)+' положительных элементов';
End;
Определение максимального элемента
Пример программы, которая сначала вводит 30 действительных чисел, затем организовывает их хранение в массиве, определяет значение и индекс (номер) максимального элемента этого массива и выдает сообщение на экран.
Procedure TForm1.Button1Click(Sender:TObject);
Type mas=array[1..30] of Real; {Декларация массива}
Var a:mas;
i:Integer; {Параметр цикла For}
max:Real; {Значение максимального элемента}
n:Integer; {Индекс (номер) максимального элемента}
Begin
For i:=1 to 30 do {Заполнение массива}
a[i]:=StrToFloat(StringGridN.Cells[i,1]);
max:=a[1];
n:=1;
For i:=2 to 30 do
If a[i]>max then
Begin
max:=a[i];
n:=i;
End;
LabelN.Caption:='Максимальный элемент массива равен '+FloatToStr(mas)+' Номер максимального элемента '+IntToStr(n);
End;
Поиск элемента в неупорядоченном массиве
Пример программы, которая сначала вводит 30 различных (!) реальных чисел, организовывает их хранение в массиве, затем запрашивает так называемое "контрольное число". После этого проверяет, есть ли в массиве элемент, который равен контрольному числу.
Procedure TForm1.Button1Click(Sender:TObject);
Type mas=array[1..30] of Real; {Декларация массива}
Var a:mas;
i:Integer; {Параметр цикла For}
p:Real; {Значение искомого элемента}
n:Integer; {Индекс (номер) искомого элемента}
Begin
For i:=1 to 30 do {Заполнение массива}
a[i]:=StrToFloat(StringGridN.Cells[i,1]);
p:=StrToFloat(EditN.Text); {Ввод контрольного числа}
n:=0; {Допустим, что в массиве нет такого элемента}
For i:=1 to 30 do
If a[i]=p then n:=i;
If n<>0 then LabelN:='Элемент № '+IntToStr(i)+' равен искомому';
else LabelN.Caption:='В массиве нет такого элемента';
End;
Контрольные вопросы
1. Опишите порядок действий при вычислении суммы элементов массива.
2. Опишите порядок действий при вычислении числа положительных элементов в массива.
3. Опишите порядок действий при определении максимального элемента в массиве.
4. Опишите порядок действий при поиске элемента в неупорядоченном массиве.