logo
Пособие по мат_инф

9.9.3. Операции с массивами

В Паскале есть лишь одна операция, которую можно делать с массивом целиком – это операция присваивания. Но для этого массивы должны быть совершенно одинаковы, то есть описаны в одной строке VAR или TYPE.

Все остальные операции производятся только с отдельными элементами массива. С элементами массива можно делать все операции, которые разрешены для базового типа массива: если массив числовой, то математические, если символьный или строковый, то, соответственно, операции с символьными или строковыми переменными.

Пример 23.

Требуется найти максимальный и минимальный элементы одномерного массива вещественного типа. Алгоритм поиска минимума: вводим переменную MIN, в которую записываем 1-ый элемент массива. Затем в цикле сравниваем каждый последующий элемент с MIN. Если число, хранящееся в текущем элементе, меньше хранящегося в MIN, то число из текущего элемента записываем в MIN. Аналогичен алгоритм поиска максимума, только вместо «меньше» ставим «больше». Написать программу.

program PR23;

var

z: array[1..100] of real;

n,k: integer;

max, min: real;

Begin

Writeln(‘ввести количество элементов массива n’);

readln (n);

for k:=1 to n do

readln (z[k]);

max:=z[1];min:=z[1];

for k:=1 to n do

if z[k]>max then max:=z[k]

else if z[k]<min then min:=z[k];

writeln(’max=’, max:8:3, ’ min=’, min :8:3);

end.

Пример 24.

Для двумерного массива состоящего из N строк и N столбцов:

а) найти сумму элементов M-столбца;

б) найти произведение элементов K-строки.

Значения К и M вводить с клавиатуры

program PR24;

type

mas=array[ 1.. 10, 1..10] of integer;

var

a:mas;

s, p, i, j, n, k, m :integer;

begin

writeln(’ввести количество строк и столбцов n’);

readln(n);

for i := l to n do

for j := l to n do

begin

writeln(’ввести элемент массива a[’,i ,’, ’,j ,’]= ’);

read (a[i, j]); {ввод элемента массива}

writeln(a[i, j]); {вывод элемента массива}

end;

writeln (’ввести номер строки-k и столбца-m’);

read (k, m);

s:=0; p:=1;

for i:=1 to n do

s:=s+a[i, m]; {сумма элементов столбца m}

for j:=1 to N do

p:=p*a[k, j]; { произведение элементов строки k}

writeln(’s=’,s, ’p=’,p));

end.

При выполнении операций с фиксированной строкой первый индекс не меняется, при суммировании по столбцу второй индекс не меняется.

Пример 25.

Сформировать одномерный массив, каждый k-й элемент которого равен произведению элементов соответствующей k-й строки двумерного массива.

program PR25;

var

A: array[1..10,1..10] of integer;

B: array[1..10] of integer;

N, M, k, j: integer;

begin

writeln(’введите количество строк N, столбцов M’);

readln (N,M);

for k:=1 to N do

for j:=1 to M do

begin

writeln(’ввести элемент массива A[‘, k , ‘,’, j ,’ ]’);

readln (A[k,j]);

end;

for k:=l to N do

begin

В[k]:=1;

for j:=1 to M do

В[k]:=В[k]*A[k,j];

end;

for k:=l to N do

write(B[k]);

end.

Пояснение к программе:

После ввода массива в следующем цикле накапливается произведение элементов каждой строки во внутреннем цикле оператором: B[k]:=B[k]*A[k,j];. Но перед этим необходимо во внешнем цикле задать начальное значение элемента нового массива оператором B[k]:=1;.

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4