"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.
Матрица — это таблица значений, у которой есть строки и столбцы. Она помогает хранить и обрабатывать данные, связанные сразу с двумя позициями: например, оценки учеников по предметам или клетки игрового поля. Размер матрицы записывают как m × n: сначала указывают число строк, затем число столбцов. Чтобы обратиться к одному элементу, нужны два индекса, а для обработки всей таблицы обычно используют два вложенных цикла.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Матрица — прямоугольная таблица элементов, расположенных по строкам и столбцам. Например, в таблице оценок строки могут соответствовать ученикам, а столбцы — предметам. Такое представление удобно, когда каждому значению нужно указать сразу две позиции.
Элемент матрицы — отдельное значение на пересечении строки и столбца. Для его обозначения используют два индекса: первый указывает строку, второй — столбец. Благодаря паре индексов можно точно обратиться к нужному числу, даже если в таблице много элементов.
Размер матрицы — количество её строк и столбцов, которое записывают как m × n. Первое число m показывает количество строк, а второе n — количество столбцов. Эта запись помогает заранее понять, сколько элементов содержится в каждой строке и сколько строк нужно обработать.
Квадратная матрица — матрица, у которой число строк равно числу столбцов. В ней можно выделить главную диагональ — элементы от верхнего левого угла к нижнему правому. Она важна в задачах, где требуется обработать только позиции с одинаковыми индексами строки и столбца.
В программе матрицу обычно представляют как двумерный массив: внешний уровень содержит строки, а внутри каждой строки лежат её элементы. Поэтому матрица из трёх строк может мыслиться как набор из трёх отдельных массивов. Такая организация соответствует таблице и позволяет хранить данные в том же порядке, в каком их удобно читать. Для матрицы размера m × n в каждой из m строк находится n значений.
Чтобы получить отдельный элемент, нужны два индекса: номер строки и номер столбца. Например, запись с индексами i и j означает значение в строке i и столбце j. Один цикл меняет только один индекс, поэтому сам по себе он перебирает лишь одну строку или один столбец. Два вложенных цикла нужны, чтобы для каждой строки последовательно проверить все её столбцы.
При обходе по строкам внешний цикл последовательно выбирает строки, а внутренний проходит по столбцам выбранной строки. Так элементы читаются слева направо, строка за строкой. При обходе по столбцам сначала фиксируют столбец, а затем меняют номер строки. Порядок важен, если результат нужно вывести в определённой последовательности или если каждый следующий шаг зависит от предыдущего.
Характеристики матрицы можно получать прямо во время обхода, не создавая отдельный список значений. Для суммы сначала задают накопитель со значением 0, а при посещении очередного элемента прибавляют его к накопителю. Для максимума сначала берут один из элементов матрицы как текущий максимум, затем сравнивают с ним каждый следующий элемент. Такой подход работает потому, что после обработки части таблицы в переменной уже хранится результат для просмотренных значений.
У квадратной матрицы главная диагональ проходит от верхнего левого угла к нижнему правому. Её элементами являются значения, у которых индекс строки и индекс столбца совпадают: например, позиции (1, 1), (2, 2) и далее. Поэтому при просмотре матрицы достаточно проверять равенство двух индексов. Остальные элементы пропускают, если задача относится только к диагонали.
| Что рассматривается | Как определяется | Как обрабатывается в программе |
|---|---|---|
| Размер матрицы | Количество строк и столбцов: m × n | В циклах задают границы перебора строк и столбцов |
| Элемент матрицы | Значение на пересечении строки и столбца | К нему обращаются по двум индексам |
| Обход по строкам | По очереди просматриваются строки, внутри каждой — столбцы | Внешний цикл меняет строку, внутренний — столбец |
| Обход по столбцам | По очереди просматриваются столбцы, внутри каждого — строки | Внешний цикл меняет столбец, внутренний — строку |
| Главная диагональ квадратной матрицы | Индексы строки и столбца равны | Обрабатывают только элементы, для которых i = j |
Используйте таблицу как памятку: сначала определите, какие позиции нужно обработать, а затем выберите порядок изменения индексов. Для всей матрицы подходят два вложенных цикла, а для главной диагонали добавляется проверка равенства индексов. При записи размера всегда сверяйте, что первым указано число строк.
Условие. Дана матрица из трёх строк и четырёх столбцов. Требуется вывести её элементы в исходном виде. Поскольку важно сохранить форму таблицы, нужно переходить к новой строке вывода после обработки всех четырёх значений очередной строки.
Ответ. Матрица выводится в три строки по четыре элемента. Вложенный порядок циклов сохраняет исходный порядок: сначала элементы первой строки, затем второй и третьей.
Условие. Для заданной матрицы нужно найти сумму всех элементов и наибольшее значение. Чтобы не пропустить ни одного числа, используем полный обход по строкам. Сумму и максимум можно обновлять при посещении каждого элемента.
Ответ. Получаются сумма всех элементов матрицы и её наибольший элемент. Инициализация максимума первым элементом надёжна: она работает и тогда, когда все значения отрицательные.
Условие. В квадратной матрице требуется найти сумму элементов главной диагонали и сравнить её с заданным числом. Сначала нужно отделить диагональные позиции от остальных. Для этого используем условие равенства индексов строки и столбца.
Ответ. Сумма диагонали равна заданному числу, если результаты сравнения совпадают. Например, у матрицы размера 3 × 3 учитываются позиции (1, 1), (2, 2) и (3, 3), а остальные пропускаются.
Путать число строк и столбцов. В записи m × n первое число — строки, второе — столбцы, но при чтении записи их иногда меняют местами. Ошибку легко допустить, если ориентироваться только на внешний вид таблицы. Проверь себя по обозначениям циклов: граница перебора строк должна соответствовать m, а столбцов — n.
Использовать один цикл для полного обхода. Один цикл может пройти элементы одной строки, но не все строки матрицы. Обычно так происходит, когда забывают, что у каждого элемента есть два индекса. Проверь себя: если матрица не однострочная, в алгоритме должны перебраться и номера строк, и номера столбцов.
Перепутать индексы строки и столбца. Тогда программа обратится не к той позиции или применит неверные границы циклов. Это часто случается, когда порядок индексов не оговорён заранее. Проверяй запись на маленьком примере: первый индекс должен выбирать строку, второй — элемент в этой строке.
Считать диагональю одинаковые значения. Главная диагональ определяется не равенством самих чисел, а совпадением индексов строки и столбца. Числа на диагонали могут быть разными, а одинаковые числа могут находиться вне её. Для самопроверки запиши несколько координат диагонали: в каждой пара индексов имеет вид (i, i).
Для работы с матрицами пригодятся знания об одномерных массивах, индексах и циклах. Вложенный массив можно представить как набор обычных массивов-строк, а два цикла — как способ перебрать все пары индексов. Если уже понятно, как обрабатывать каждый элемент одномерного массива, нужно лишь добавить выбор строки.
Матрицы применяют для хранения таблиц данных, изображений и игровых полей. В каждом случае значение связано с позицией в строке и столбце: например, с цветом пикселя или состоянием клетки. Поэтому навыки обхода и поиска характеристик в матрице помогают решать более сложные задачи обработки данных.
Чем матрица отличается от обычного массива?
Обычный массив хранит элементы в одном последовательном ряду, а матрица организует их в строки и столбцы. Поэтому для элемента матрицы указывают два индекса, а для полного обхода обычно нужны два цикла.
Как понять, сколько строк и столбцов в матрице размера 3 × 5?
Первое число показывает количество строк, поэтому их три. Второе число показывает количество столбцов, поэтому столбцов пять.
Почему для перебора всех элементов матрицы нужны два цикла?
Один цикл выбирает строку, а второй перебирает элементы внутри неё. Так удаётся посетить каждую пару индексов и не ограничиться одной строкой.
Как найти элемент, стоящий во второй строке и третьем столбце?
Нужно обратиться к элементу с индексами строки 2 и столбца 3. В языках программирования индексация может начинаться с нуля, поэтому сначала выясни, как именно нумеруются строки и столбцы.
Как определить элементы главной диагонали?
Главная диагональ проходит от верхнего левого угла квадратной матрицы к нижнему правому. В неё входят элементы, у которых индекс строки равен индексу столбца.
§ 67. Матрицы