Какая размерность данного массива (5*7) Найдите элемент А(4,3), А(5,7)
Найдите А(3,1)+А(2,6)
Найдите А(6,4)*А(5,4)
Ввод, вывод элементов двумерного массива
При заполнении и выводе на экран элементов двумерных массивов необходимо использовать вложенные циклы. Внешний цикл будет определять номер строки, а внутренний номер столбца.
For i=a to b
For k=c to d
:
Next k
Next i
Дана программа
10 CLS
20 INPUT "введите через запятую число строк и столбцов ";N,M
30 DIM A(N,M)
40 FOR I=1 TO N
50 FOR J=1 TO M
60 PRINT"введите элемент А(";I;J;")=";
70 INPUT A(I,J)
80 NEXT J
90 NEXT I
100 FOR I=1 TO N
110 FOR J=1 TO M
120 PRINT A(I,J);
130 NEXT J
140 PRINT
150 NEXT I
160 END
ответьте на вопросы:
Как называется массив в предложенной программе?
Сколько строк, столбцов в данном массиве?
Каким способом заполнен массив?
Назовите номера строк или строки, в которых вводятся элементы массива?
Назовите номера строк или строки, в которых выводятся элементы массива на экран?
3. Обработка элементов двумерного массива
1. Удаление строки из массива.
90 REM УДАЛЕНИЕ СТРОКИ
100 N=N-1
105 INPUT “ВВЕДИТЕ НОМЕР УДАЛ СТРОКИ”;K
110 FOR I=K TO N
120 FOR J=1 TO N
130 B(I,J)=B(I+1,J)
140 NEXT J
150 NEXT I
2. Включение строки в массив.
90 REM ВКЛЮЧЕНИЕ СТРОКИ В МАССИВ
100 FOR I=N TO K STEP –1
110 FOR J=1 TO M
120 B(I+1,J)=B(I,J)
130 NEXT J
140 NEXT I
150 FOR J=1 TO M
160 A(K,J)=C(J)
170 Next J
180 N=N+1
3. Перестановка строк матрицы.
(с использованием вспомогательной переменной Р перестановка осуществляется во всех столбцах двух строк)
90 REM ПЕРЕСТАНОВКА СТРОК
100 FOR K=1 TO M
110 P=A(I,K): A(I,K)=(J,K):A(J,K)=P
120 NEXT K
4. Поиск минимального( максимального) элемента в массиве.
Для двухмерного массива алгоритм аналогичный, но нужно для каждой строки просматривать элементы всех столбцов(что требует двойного цикла) и запомнить два индекса: номер строки (K) и номер столбца (L).
90 REM ПОИСК МИНИМАЛЬНОГО ЭЛЕМЕНТА МАССИВА
100 P=A(1,1) : K=1:L=1
110 FOR I=1 TO N
120 FOR J=1 TO M
130 IF P<=A(I,J) GOTO 150
140 P=A(I,J) : K=I:L=J
150 NEXT J
160 NEXT I
4. Закрепление пройденной темы. Решение задачи.
Задача 1. Напишите программу формирования и вывода двумерного массива произвольного размера так, чтобы в четных строках стояли 1, а в нечетных элементы задавались случайным образом из интервала (0,10).
CLS
Randomize Timer
Dim A(10,10)
For k=1 to 10
For m=1 to 10
If k mod 2=0 then A(k,m)=1 else A(k,m)=int(rnd*10)
Next m
Next k
For k=1 to 10
For m=1 to 10
Print A(k,m);
Next m
Print
Next k
end
Задача 2. Двумерный массив В(5,6) задан четными элементами случайным образом из интервала (-10,10). Включите на место третьей строки строку, состоящую из 1. выведите на экран оба массива.
CLS
RANDOMIZE TIMER
DIM B(5,6)
FOR I=1 TO 5
FOR J=1 TO 5
B(I,J)=INT(RND*20-10)
? B(I,J);
NEXTJ
?
NEXT I
D(6,6)
FOR I=5 TO 3 STEP –1
FOR J=1 TO 5
B(I+1,J)=B(I,J)
NEXT J
NEXT I
FOR J=1 TO 5
D(3,J)=1
Next J
FOR I=1 TO 5
FOR J=1 TO 5
? D(I,J);
NEXT J
?
NEXT I
Задача 3. В двумерном массиве произвольных чисел В(4,7) взаимно поменять местами 2-й и 5-й столбцы. Вывести исходный масссив и массив, полученный после перестановок.
CLS
RANDOMIZE TIMER
DIM B(4,7)
DIM A(4,7)
FOR I=1 TO 4
FOR J=1 TO 7
B(I,J)=INT(RND*10)
? B(I,J)
A(I,J)=B(I,J)
NEXT J
?
NEXT I
FOR I=1 TO 4
P=A(I,2):A(I,2)=A(I,5): A(I,5)=P
NEXT I
FOR I=1 TO 4
FOR J=1 TO 7
? A(I,J);
NEXT J
?
NEXT I
Задача 4 В двумерном массиве произвольных чисел А(10,10) найти наибольший элемент главной диагонали.
CLS
RANDOMIZE TIMER
DIM A(10,10)
FOR I=1 TO 10
FOR J=1 TO 10
A(I,J)=INT(RND*10)
NEXT J
NEXT I
MAX=A(1,1)
B(10)
FOR I=1 TO 10
FOR J=1 TO 10
IF I=J THEN B(I)=A(I,J)
NEXT J,I
FOR I=2 TO 10
IF MAX>B(I) THEN MAX=MAX ELSE MAX=B(I)
NEXT I
? “MAX=”;MAX
Дополнительно (если останется время)
Задача 2. Напишите программу формирования и вывода массива размером (6*9), каждые 3 последовательных элемента в строке которого составлены по следующему правилу:
1-й - числу введенному с клавиатуры
2-й - удвоенному индексу строки
3-й - случайному однозначному числу
Dim A(6,9)
For k=1 to 6
For m=1 to 9 step 3
Input "введите 1 элемент массива";A(k,m)
A(k,m+1)=2*k
A(k,m+2)=int(rnd(1)*10)
Next m
Next k
For k=1 to 6
For m=1 to 9
Print A(k);
Next m:Print
Next k
Задача 2. Составьте программу формирования одномерного массива из максимальных элементов строк двумерного массива, заданного датчиком случайных чисел.
CLS
Dim A(10,10),B(10)
For k=1 to 10: for m=1 to 10
A(k,m)=int(rnd(1)*100)
Print A(k,m);: Next m: Print: Next k
For k=1 to 10: min=A(k,1)
For m=1 to 10
If A(k,m)
Next m
B(k)=min:Next k
For k=1 to 10
Print B(k)
Next k
Задача 3. Напишите программу, которая заполняет первую строку массива размером 2*5 фамилиями врачей, а вторую их специальностями. Определите и выведите по запросу с клавиатуры фамилию нужного специалиста.
Dim A$(2,5)
Data Иванов, Петров, Сидорова, Кулаков, Ильин
Data окулист, педиатр, стоматолог, кардиолог, лор
For m=1 to 2
For n=1 to 5
Read A$(m,n)
Print A$(m,n)
Next n
Print
Next m
Input "Введите специальность врача" F$
For m1 to 5
If A$(2,m)=F$ then Print A$(1,m)
Next m
4. Самостоятельная работа.
5. Подведение итогов. Домашнее задание
Задача 1. Напишите программу формирования массива размером 5*5 датчиком случайных чисел. Замените в нем нечетные значения элементов максимальными. Выведите исходный массив и измененный массивы.
Задача 2. В таблице А(3,3) случайных чисел найти разницу между наибольшими и наименьшими числами.
Задача 3. Дан массив D(12,15). Удалить из данного массива 10 строку.
12