Теория
Массив — Упорядоченный набор данных, для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа.
Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными, с двумя — двумерными и т. д. Одномерный массив нестрого соответствует вектору в математике, двумерный — матрице. Чаще всего применяются массивы с одним или двумя индексами, реже — с тремя, ещё большее количество индексов встречается крайне редко.
Пример статического массива на Паскале -
wordArray : array [Word] of Integer; // Статический, размер = High(Word) + 1
multiArray : array [Byte, 1..5] of Char; // Статический массив, 2 измерения
rangeArray : array [5..20] of String; // Статический массив, размер = 16
Также, как и в задании 8 важно понимать, что происходит внутри цикла. По сути это всё, что нам необходимо.
Пример задания.
В программе используется целочисленный массив А с индексами от 0 до 9. Значения элементов массива равны 4; 5; 4; 7; 6; 3; 9; 11; 7; 8 соответственно, т.е. А[0] = 4; А[1] = 5 и т.д.
Определите значение переменной k после выполнения следующего фрагмента программы:
k : = 0 ;
for i := 0 to 9 do
if A[i] < A[9-i] then
begin
k : = k + 1 ;
t := A [ i ] ;
A[i] := A[9-i] ;
A [ 9 - i ] : = t ;
end;
Итак, нам необходимо разобраться, что происходит в ходе выполнения данной программы.
for i := 0 to 9 do - перебираются все элементы массива.
if A[i] < A[9-i] - эта строчка говорит нам, что сравниваются сначала первый (нулевой по порядковому номеру) и последний элемент массива, затем второй и предпоследний. Как только встречается середина массива, то есть 6 и 3 - A[4] и A[5] соответсвенно, сравнение идет дальше, можно сказать в обратную сторону - A[5] и A[4], затем A[6] и A[3].
Теперь посмотрим что происходит если условие выполняется:
увеличивается счетчик - k, то есть подсчитывается количество элементов, удовлетворяющих данному условию.
А затем эти элементы меняются местами:
t := A [ i ] ;
A[i] := A[9-i] ;
A [ 9 - i ] : = t ;
Иначе элементы остаются на своем месте.
Итак, первый шаг:
спрашиваем 4<8?
Ответ - да, поэтому считаем этот элемент, k=0+1=1 и меняем элементы местами, получаем массив:
8; 5; 4; 7; 6; 3; 9; 11; 7; 4
Получаем k=9