QBASICBOOK.ru: сайт про QB64

Опубликовано: 2018-06-27 08:00:00

Ввод-вывод двумерного массива (матрицы)

С вводом-выводом двумерного массива всё не на много сложнее. Эта статья почти аналогична предыдущей, с похожими примерами: ввод матрицы с клавиатуры и заполнение матрицы случайными числами, а также пример с вводом-выводом квадратной матрицы.

Есть 3 основных варианта заполнения массива:

Есть и другие способы, но они применяются редко, и мы о них пока не будем говорить.

Разберём самый популярный способ.

Итак, пример первый – ввод двумерного массива (матрицы) вида NxM с клавиатуры и его вывод на экран:


  1. CONST N = 3 'RAZMER MASSIVA PO STROKAM
  2. CONST M = 4 'RAZMER MASSIVA PO STOLBCAM
  3. DIM A(N, M)
  4. FOR I = 1 TO N
  5.     FOR J = 1 TO M
  6.         PRINT USING "A[#][#]: "; I; J;
  7.         INPUT A(I, J)
  8.     NEXT
  9. NEXT
  10. FOR I = 1 TO N
  11.     FOR J = 1 TO M
  12.         PRINT USING "##.##  "; A(I, J);
  13.     NEXTPRINT
  14. NEXT

Рисунок 1 – Ввод и вывод двумерного массива

Рисунок 1 – Ввод и вывод двумерного массива

Рисунок 2 – Результат ввода-вывода двумерного массива

Рисунок 2 – Результат ввода-вывода двумерного массива

Начнем с того, что массив надо объявить (или описать). Легче всего это сделать просто добавив впереди слово DIM, иными словами чтобы описать массив и зарезервировать под него место в памяти, используют оператор DIM.

Для вывода двумерного массива необходимо так же два цикла: по строкам и по столбцам (здесь указаны примеры ввода элементов по строками, если вам необходимо будет ввести матрицу по столбцами вкладывайте циклы наоборот).

Опять же, хотелось бы сказать, размерность массива необязательно задавать константой, а можно ввести непосредственно с клавиатуры. Использование констант в размерности это любительский способ, который мне просто больше нравится.

Пустой оператор PRINT отменяет дальнейший вывод в этой строке и переводит курсор для печати на следующую строку.

Пример второй – заполнение двумерного массива (матрицы) вида NxM случайными числами и его вывод на экран:


  1. RANDOMIZE TIMER
  2. CONST N = 4 'RAZMER MASSIVA PO STROKAM
  3. CONST M = 6 'RAZMER MASSIVA PO STOLBCAM
  4. DIM A(N, M)
  5. 'ZAPOLNENIYE SLUCHAYNYMI CHISLAMI OT 0 DO 10
  6. A = 0: B = 10
  7. FOR I = 1 TO N
  8.     FOR J = 1 TO M
  9.         A(I, J) = INT((B - A + 1) * RND + A)
  10.     NEXT
  11. NEXT
  12. FOR I = 1 TO N
  13.     FOR J = 1 TO M
  14.         PRINT USING "##.##  "; A(I, J);
  15.     NEXTPRINT
  16. NEXT

Рисунок 3 – Заполнение двумерного массива случайными числами от 0 до 10

Рисунок 3 – Заполнение двумерного массива случайными числами от 0 до 10

Рисунок 4 – Вывод значений двумерного массива

Рисунок 4 – Вывод значений двумерного массива

В этом примере интервал случайных чисел это [A..B]. Если вам необходимо будет генерировать вещественные случайные числа просто уберите INTи измените формат вывода PRINT USING на решётки с точкой.

Если вам необходима квадратная матрица NxN, сотрите объявление M и замените M на N в циклах FOR

«Зачем делать матрицы квадратными, а не прямоугольными спросите вы?», – Да все просто. Бывают задачи где матрица просто должна быть квадратной, например, при работе с диагоналями, на конкретных примерах увидите о чем я говорю.

Если вы запомните, как это выполняется ввод-вывод массиов, считайте, что половину задачи вы уже решили. А это уже не мало.

Спасибо за прочтение этой статьи.

 

Прикрепленные файлы:

< Предыдущая статья
Ввод-вывод одномерного массива (вектора)
Следующая статья >
Решение задач на вектора. Часть первая. Поиск максимального элемента

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.