Опубликовано: 2018-06-27 08:00:00
Ввод-вывод двумерного массива (матрицы)
С вводом-выводом двумерного массива всё не на много сложнее. Эта статья почти аналогична предыдущей, с похожими примерами: ввод матрицы с клавиатуры и заполнение матрицы случайными числами, а также пример с вводом-выводом квадратной матрицы.
Есть 3 основных варианта заполнения массива:
- Ручной ввод с клавиатуры;
- Чтение данных из списка;
- Заполнение случайными числами.
Есть и другие способы, но они применяются редко, и мы о них пока не будем говорить.
Разберём самый популярный способ.
Итак, пример первый – ввод двумерного массива (матрицы) вида NxM с клавиатуры и его вывод на экран:
- CONST N = 3 'RAZMER MASSIVA PO STROKAM
- CONST M = 4 'RAZMER MASSIVA PO STOLBCAM
- DIM A(N, M)
- FOR I = 1 TO N
- FOR J = 1 TO M
- PRINT USING "A[#][#]: "; I; J;
- INPUT A(I, J)
- NEXT
- NEXT
- FOR I = 1 TO N
- FOR J = 1 TO M
- PRINT USING "##.## "; A(I, J);
- NEXT: PRINT
- NEXT
Рисунок 1 – Ввод и вывод двумерного массива
Рисунок 2 – Результат ввода-вывода двумерного массива
Начнем с того, что массив надо объявить (или описать). Легче всего это сделать просто добавив впереди слово DIM, иными словами чтобы описать массив и зарезервировать под него место в памяти, используют оператор DIM.
Для вывода двумерного массива необходимо так же два цикла: по строкам и по столбцам (здесь указаны примеры ввода элементов по строками, если вам необходимо будет ввести матрицу по столбцами вкладывайте циклы наоборот).
Опять же, хотелось бы сказать, размерность массива необязательно задавать константой, а можно ввести непосредственно с клавиатуры. Использование констант в размерности это любительский способ, который мне просто больше нравится.
Пустой оператор PRINT отменяет дальнейший вывод в этой строке и переводит курсор для печати на следующую строку.
Пример второй – заполнение двумерного массива (матрицы) вида NxM случайными числами и его вывод на экран:
- RANDOMIZE TIMER
- CONST N = 4 'RAZMER MASSIVA PO STROKAM
- CONST M = 6 'RAZMER MASSIVA PO STOLBCAM
- DIM A(N, M)
- 'ZAPOLNENIYE SLUCHAYNYMI CHISLAMI OT 0 DO 10
- A = 0: B = 10
- FOR I = 1 TO N
- FOR J = 1 TO M
- A(I, J) = INT((B - A + 1) * RND + A)
- NEXT
- NEXT
- FOR I = 1 TO N
- FOR J = 1 TO M
- PRINT USING "##.## "; A(I, J);
- NEXT: PRINT
- NEXT
Рисунок 3 – Заполнение двумерного массива случайными числами от 0 до 10
Рисунок 4 – Вывод значений двумерного массива
В этом примере интервал случайных чисел это [A..B]. Если вам необходимо будет генерировать вещественные случайные числа просто уберите INTи измените формат вывода PRINT USING на решётки с точкой.
Если вам необходима квадратная матрица NxN, сотрите объявление M и замените M на N в циклах FOR.
«Зачем делать матрицы квадратными, а не прямоугольными спросите вы?», – Да все просто. Бывают задачи где матрица просто должна быть квадратной, например, при работе с диагоналями, на конкретных примерах увидите о чем я говорю.
Если вы запомните, как это выполняется ввод-вывод массиов, считайте, что половину задачи вы уже решили. А это уже не мало.
Спасибо за прочтение этой статьи.