Условия всех задач из категории A12
Историческая справка и теоретические сведения
Разработчики языков программирования однажды столкнулись с проблемой упорядочивания таких данных, которые можно отнести к одному и тому же типу (целые числа, буквенные символы, дробные числа и так далее). Но требовалось не простая классификация того или иного набора данных, а еще и удобная система их поиска и взаимодействия с ними. Так появились массивы, став одним из самых мощных, удобных и эффективных инструментов во многих языках программирования. Фактически информационные массивы были придуманы и вошли в употребление во второй половине двадцатого века.
Массив – логический контейнер, для хранения однородных (однотипных) элементов, причем доступ к элементу реализован при помощи специального индекса. То есть, каждый элемент массива имеет две характеристики: значение и индекс.
Количество используемых индексов массива может быть различным в зависимости от ситуации. Массивы с одним индексом называются одномерными массивами, с двумя – двумерными массивами.
Рассмотрим графическую интерпретацию одномерного массива (пусть массив именуются как А), состоящего из 8-ми элементов целочисленного типа данных:
98 | -23 | 0 | 78 | -6 | 1 | 12 | 120 | значение |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | индекс |
Для обращения к элементу массива, как правило, в программе используют квадратные скобки (с другой стороны, в языке программирования Basic, для обращения к элементу массива используются круглые скобки).
Например, запись A[3], означает обращение к элементу массива с именем А, имеющего индекс три. Значением данного элемента (как видно из массива, визуализированного выше данного текста) является число 0.
В программах, использующих одномерные массивы, обычно применяются циклические конструкции, особенно цикл со счетчиком for. Это обусловлено тем, что статические массивы четко определяют левую и правую границу своих элементов, а циклические конструкции типа for - to - do как раз оперируют границами изменения счетчика цикла.
Рассмотрим графическую интерпретацию двумерного массива (пусть массив именуются как А), состоящего из трех строк и четрых колонок, то есть, имеющего 3 · 4 = 12 [элементов] целочисленного типа данных:
1 | 2 | 3 | 4 | |
1 | 78 | -34 | 0 | 12 |
2 | 7 | -2 | 1783 | 8 |
3 | 8 | 9 | -10 | 11 |
Для обращения к элементу массива, как правило, в программе используют квадратные скобки (с другой стороны, в языке программирования Basic, для обращения к элементу массива используются круглые скобки).
Поскольку обрабатывается двухмерный массив, то при обращении к элементу массива требуется уточнить два индекса:
первый индекс показывает номер строки;
второй индекс показывает номер колонки.
Например, запись A[3, 2], означает обращение к элементу массива с именем А, расположенного в строке под номером три и в колонке под номером два. Значением данного элемента (как видно из массива, визуализированного выше данного текста) является число 9.
Сортировка массива – процесс упорядочивания элементов массива по какому-либо признаку.
Алгоритм сортировки оценивается по двум признакам:
время;
расходуемая память.
Некоторые конститутивные алгоритмы сортировки:
пузырьковая сортировка;
сортировка выбором;
сортировка вставками;
сортировка слиянием;
быстрая сортировка;
пирамидальная сортировка.
Заполнение массива – инициализация элементов массива конкретными физическими значениями.
Поиск в массиве – определение одного или нескольких элементов массива, значения которые удовлетворяют граничным критериям.
*Примечание: при обработке массива интенсивно используются циклы со счетчиком. Это обусловлено тем, что размер массива – заранее известная величина (все массивы статические), следовательно, известны индексы первого и последнего элемента массива.
Методические указания
Для успешного решения задач из данной категории вы должны уметь:
селекционировать один из предложенных языков программирования;
понимать, каким образом проведена инициализация элементов в заданном массиве;
разобрать тело второго цикла (как правило, именно в нем производится все обработка), то есть, понять запрограммированный в данном цикле алгоритм.
Задача №1
Дано:
в программе описан одномерный целочисленный массив А с индексами от 0 до 10 и целочисленные переменные k, i. Ниже представлен фрагмент одной и той же программы, записанный на разных языках программирования (Turbo Pascal и Basic), в котором значения элементов сначала задаются, а затем меняются.
язык программирования Pascal | язык программирования Basic |
for i := 0 to 10 do | FOR i = 0 to 10 |
A[i] := i; | A(i) = i |
for i := 0 to 4 do | NEXT i |
begin | FOR i = 0 to 4 |
k := A[i]; | k = A(i) |
A[i] := A[10 - i]; | A(i) = A(10 - i) |
A[10 - i] := k; | A(10 - i) = k |
end; | NEXT i |
Вопрос:
чему будут равны элементы этого массива?
Варианты ответа:
10 9 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 4 3 2 1 0
10 9 8 7 6 5 6 7 8 9 10
Задача №2
Дано:
в программе описан одномерный целочисленный массив А с индексами от 0 до 10 и целочисленные переменные k, i. Ниже представлен фрагмент одной и той же программы, записанный на разных языках программирования, в котором значения элементов сначала задаются, а затем меняются.
язык программирования Pascal | язык программирования Basic |
for i := 0 to 10 do | FOR i = 0 to 10 |
A[i] := i; | A(i) = i |
for i := 0 to 10 do | NEXT i |
begin | FOR i = 0 to 10 |
k := A[i]; | k = A(i) |
A[i] := A[10 - i]; | A(i) = A(10 - i) |
k := A[10 - i]; | k = A(10 - i) |
end; | NEXT i |
Вопрос:
чему будут равны элементы этого массива?
Варианты ответа:
10 9 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 4 3 2 1 0
10 9 8 7 6 5 6 7 8 9 10
Задача №3
Дано:
в программе описан одномерный целочисленный массив А с индексами от 0 до 10 и целочисленные переменные k, i. Ниже представлен фрагмент одной и той же программы, записанный на разных языках программирования, в котором значения элементов сначала задаются, а затем меняются:
язык программирования Pascal | язык программирования Basic |
for i := 0 to 10 do | FOR i = 0 to 10 |
A[i] := i; | A(i) = i |
for i := 0 to 9 do | NEXT i |
begin | FOR i = 0 to 9 |
A[i] := A[i + 1]; | A(i) = A(i + 1) |
end; | NEXT i |
Вопрос:
чему будут равны элементы массива?
Варианты ответа:
10 0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10 10
0 0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10 0
Задача №4
Дано:
следующий фрагмент программы обрабатывает массив А размером n х n, n > 5. Представим массив в виде квадратной таблицы, в которой для элемента массива А [i, j] величина i является номером строки, а величина j - номером столбца, в котором расположен элемент:
Вопрос:
что меняет данный алгоритм?
Варианты ответа:
две строки в таблице;
два столбца в таблице;
элементы диагонали в таблице;
элементы строки на элементы столбца в таблице.