Организация доступа к элементам массива.
Действия над массивами
Массивы, объявленные в разделе описания переменных, следует заполнять данными, прежде чем выполнить над ними какие-то действия. Значения элементов массива можно задать следующими способами:
- Ввести данные с клавиатуры;
- Присвоить элементам заданные значения;
- Считать значения из файла.
В любом случае для заполнения массива используется цикл FOR. Для двумерных массивов используются вложенные циклы.
Пример заполнения одномерного массива из 5 элементов при помощи ввода значений с клавиатуры:
for i:= 1 to 5 do readln(a[i]);
Пример заполнения матрицы 3х4 (всего 12 чисел) с клавиатуры:
for i:= 1 to 3 do
for j:= 1 to 4 do
readln(a[i,j]);
Иногда необходимо заполнить массив нулями, т.е. обнулить.
for i:= 1 to 5 do a[i]:= 0;
или
for i:= 1 to 3 do
for j:= 1 to 4 do
a[i,j]:= 0;
Вывод значений элементов массива также выполняется с помощью цикла FOR с использованием операторов write и writeln. Например, вывод вектора из пяти элементов выглядит так:
for i:= 1 to 5 do writeln (a[i]); -в столбец;
for i:= 1 to 5 do write (a[i], ' '); -в строку через пробел-разделитель;
for i:= 1 to 5 do write (a[i]:4); -с заданным форматом.
Вывод матриц по строкам и столбцам выполняется при помощи оператора writeln; (без параметра). Он используется после вывода текущей строки матрицы для перевода курсора в начало следующей строки:
for i:= 1 to 3 do
Begin
for j:= 1 to 4 do
write(a[i,j]:4);
Writeln;
End;
Действия с одномерными массивами
При обработке массивов часто требуется вычислить сумму элементов массива, их среднее арифметическое значение или найти значение и номер максимального и минимального элементов, а также изменить значения элементов массива.
Условимся, что в векторе a содержится n элементов.
{Вычислим сумму элементов:}
s:= 0;
for i:= 1 to n do
s:= s + a[i];
{Вычислим произведение элементов:}
р:= 1;
for i:= 1 to n do
р:= р*a[i];
{Подсчитаем количество четных элементов:}
k:= 0;
for i:= 1 to n do
if a[i] mod 2 = 0 then
k:= k + 1;
{Найдем номер первого из элементов массива, имеющего нулевое значение. Если такого элемента нет, то выведем соответствующее сообщение:}
i:= 0;
repeat
i:= i+ 1;
until (a[i] = 0) or (i = n);
if a[i] = 0 then writeln('Номер нулевого элемента = ', i)
else
writeln('Таких элементов нет');
{Если требуется найти номера всех нулевых элементов, то лучше применить оператор FOR:}
for i:= 1 to n do
if a[i] = 0 then write(i, ' ');
{Поиск максимального элемента и его номера. Переменная max хранит максимальное значение элемента, а k – его номер.}
max:= a[i];
k:= 1;
for i:= 2 to n do
if a[i] > max then
begin
max:= a[i];
k:= i;
end;
Многомерные массивы (матрицы).
Дата добавления: 2017-11-04; просмотров: 437;