![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Двумерные массивы. Матрицы
Если в массиве хранится таблица значений, то такой массив называют двумерным, а его элементы нумеруются двумя индексами – номером строки и номером столбца, на пересечении которых находится данный элемент. В памяти компьютера все элементы массива занимают одну непрерывную область. Двумерный массив располагается в памяти по строкам. Двумерный массив можно представить в виде матрицы:
Описание двумерного массива: var a: array[1..n, 1..m] of < тип>; где a - имя массива; n, m - количество строк и столбцов в массиве; < тип> - тип элементов массива. Количество элементов в массиве - n Например: var mas: array [1…10, 1..10] of real; Описан массив с именем mas - содержащий 100 элементов вещественного типа (10 строк и 10 столбцов). Размер массива должен быть задан в явном виде (как в предыдущем фрагменте), или через const. Например: const n = 5, m=5; var mas: array[1…n, 1..m] of real; Описан массив mas - содержащий 25 элементов целого типа (5 строк и 5 столбцов). Каждый элемент массива определяется с помощью двух индексов, стоящих справа от имени в квадратных скобках. a[i, j] - элемент стоящий на пересечении i-ой строки и j-го столбца. a[i, i] - элементы главной диагонали. a[i, 2] - элементы второго столбца. Индекс может быть - переменной, константой, арифметическим выражением целого типа. Если количество строк равно количеству столбцов, матрица называется квадратной. Обработка двумерных массивов производится при изменении индексов элементов. Все элементы главной диагонали квадратной матрицы удовлетворяют условию: i=j (номер строки равен номеру столбца). Все элементы побочной диагонали квадратной матрицы удовлетворяют условию: i+j=n+1(n - количество строк и столбцов). Элементы, расположенные над главной диагональю удовлетворяют условию: i< j (номер строки строго меньше номера столбца). Элементы, расположенные под главной диагональю удовлетворяют условию: i> j (номер строки строго больше номера столбца). Ввод элементов двумерного массива
for j: =1 to m do Вложенные циклы readln(a[i]); Данный фрагмент позволит ввести элементы массива по строкам. Для ввода элементов массива по столбцам, достаточно в предыдущем фрагменте поменять местами внутренний и внешний циклы. Вывод элементов двумерного массива for i: =1 to n do begin for j: =1 to n do write(a[I, j], ‘ ‘); writeln; end; Данный фрагмент позволит вывести элементы массива в виде матрицы. 2.5.3. Примеры типовых задач по теме «Массивы одномерные» 1. Составить программу подсчета суммы и произведения элементов одномерного массива вещественных чисел. Обозначим через s – сумму элементов массива, p - произведени.
При накапливании суммы переменную s необходимо обнулить, а при накапливании произведения переменной p присвоить 1. 2. Дан массив a(n). Найти максимальный элемент массива и определить его номер. Введем обозначения: a- имя массива; n- количество элементов в массиве; i- индекс элементов массива; max- максимальный элемент массива; nmax- номер максимального элемента.
3. Задан массив целых чисел. Отсортировать элементы одномерного массива по возрастанию. Существует много способов сортировки элементов массива. Введем обозначения: a- имя массива; n- количество элементов в массиве; i- индекс элементов массива; f – флажок, f =0 массив отсортирован, f =1 массив пока не отсортирован; р- дополнительная переменная для обмена местами соседних элементов.
В данном алгоритме используются вложенные циклы. Внутренний цикл (for…to…do) – позволяет один раз пройтись по массиву, сравнивая соседние элементы. В случае, если предыдущий элемент (a[ i ]) окажется больше последующего (a[i+1]), элементы меняются местами через дополнительную переменную p. Внешний цикл(repeat…until) – повторяется до тех пор, пока массив не будет отсортирован. В программе применяется переменная – флажок. f =1 – признак того, что два соседних элемента менялись местами, массив еще не упорядочен. f =0 – признак того, что массив упорядочен.
4. Задан одномерный массив целых чисел. Найти количество нечетных чисел среди элементов массива. Введем обозначения: a- имя массива; n- количество элементов в массиве; i- индекс элементов массива; kol- количество нечетных чисел.
Выражение odd(a[ i ]) – будет «истинным», если элемент массива нечетное число.
2.5.4. Примеры типовых задач по теме «Двумерные массивы» 1. Составить программу подсчета суммы и произведения элементов двумерного массива вещественных чисел. Введем обозначения: a- имя массива; n- количество строк в массиве; m- количество столбцов в массиве; i, j- индексы элементов массива; s- сумма элементов массива; p – произведение элементов массива.
2. Задана целочисленная квадратная матрица. Определить является ли она симметричной относительно главной диагонали. Введем обозначения: a- имя массива; n- количество строк и столбцов в массиве; i, j- индексы элементов массива; f- признак симметричности матрицы, допустим f=0 матрица симметрична, f =1 матрица не симметрична.
При решении этой задачи сравниваются элементы расположенные над главной диагональю (a[ i, j ]) с элементами, расположенными под главной диагональю (a[ j, i ]) и в случае их равенства матрица считается симметричной.
3. Задана матрица вещественных чисел. Образовать одномерный массив, где каждый j – й элемент равен произведению элементов j-ого столбца двумерного массива. Введем обозначения: a- имя двумерного массива; b- имя одномерного массива; n- количество строк в массиве; m- количество столбцов в массиве; i, j- индексы элементов массива;
4. Составить программу нахождения максимального среди элементов двумерного массива вещественных чисел. Определить номер строки и номер столбца, на пересечении которых был найден максимальный элемент. Введем обозначения: a- имя двумерного массива; n- количество строк в массиве; m- количество столбцов в массиве; i, j- индексы элементов массива; kmax, lmax - номер строки и номер столбца, на пересечении которых находится максимальный элемент.
Вопросы для самоконтроля 1. Что такое массив? 2. Будут ли сохранены данные массива в памяти компьютера после окончания работы программы? 3. Что такое индекс массива? 4. Какого типа должны быть переменные, являющиеся индексами массива? 5. Как можно задавать размер массива? 6. Может ли реальное количество элементов в массиве быть меньше, чем указано при описании? 7. Может ли реальное количество элементов в массиве быть больше, чем указано при описании? 8. В чем состоит разница между одномерными и двумерными массивами? 9. В каких случаях целесообразно создавать двумерные массивы? 10. Как расположены элементы двумерного массива в памяти компьютера? 11. Как определить количество элементов в двумерном массиве? 12. Как определить размер памяти в байтах, выделенной под хранение двумерного массива? 13. Какая матрица называется квадратной? 14. Что характеризует элементы, расположенные на главной диагонали, над и под главной диагональю?
|