Двумерные массивы. Простейшие программы В этом разделе

advertisement
Двумерные массивы. Простейшие программы
В этом разделе рассматриваются простейшие задачи с использованием двумерных
массивов (матриц). Напомним кратко наиболее важные понятия, определения и свойства,
связанные с двумерными массивами:
- это совокупность однотипных переменных.
Размерность двумерного массива равна 2, поэтому каждый элемент массива однозначно
определяется с помощью двух индексов: I - номера сроки и J - номера столбца, где он
расположен, например, А(2, 4), A(1, N). Строки нумеруются сверху вниз, а столбцы слева направо.
называется прямоугольная таблица, состоящая из M строк и N столбцов. Элементами
матрицы могут быть числа, функции и вообще любые элементы какого-нибудь заданного
множества. В этом пособии рассматриваются только матрицы, элементами которых
являются числа.
азмер массива - количество элементов в нем. В QBASIC нумерация строк и
столбцов начинается с 0, что не всегда удобно, поэтому нулевая строка и нулевой столбец
в дальнейшем не будут использоваться в расчетах. Оператором OPTION BASE 1 можно
установить минимальные значения I и J, равными 1.
если размер массива будет меняться.
помощью оператора INPUT и двух циклов, внешнего по I и внутреннего по J (ввод
элементов матрицы по строкам) либо внешнего по J и внутреннего по I (ввод элементов
матрицы по столбцам). Во втором способе ввод элементов может осуществляться с
помощью оператора READ и блока данных. Ввод в память ЭВМ элементов двумерного
массива не стоит совмещать с другими операторами.
называется порядком матрицы.
называется главной (AC), а другая (BD) побочной (антиглавной).
B
А
I
J
С
D
У всех элементов, расположенных над главной диагональю, индекс J>I, под главной
диагональю - I>J, а на главной диагонали - I=J. У всех элементов, расположенных над
побочной диагональю, I+J<N+1, под побочной - I+J>N+1, а на побочной диагонали
I+J=N+1. Это следует из того, что в системе координат IAJ уравнение прямой AC имеет
вид I=J, а DB - I+J=N+1.
или в столбце, произведения элементов в строке или в столбце, максимального или
минимального значения среди элементов в строке или столбце и т. д. ) достаточно одного
цикла.
матрицы, содержащих более двух строк или столбцов, необходимо два цикла, один из
которых вложенный.
I, а для столбца - индекс J. В этом случае при вычислении различных характеристик в I-ой
строке необходим цикл по J, а в J-ом столбце цикл по I.
В этом разделе рассматриваются простейшие задачи с использованием двумерных
массивов.
Пример 1. Составить программу согласно следующему условию. Дана матрица А
- заданные натуральные числа. Найти сумму элементов,
расположенных в 1-ой строке матрицы.
N
Указание. В цикле по J от 1 до N при I=1 вычислить сумму S=  A(1, J ) .
j 1
DEFINT I, J, M, N
INPUT “Введите количество строк M=“; M
INPUT “Введите количество столбцов N=“; N
DIM A(M, N)
PRINT “Введите элементы матрицы A”
FOR I=1 TO M
FOR J=1 TO N
PRINT “А(“; I; “,”; J; “)=“;
INPUT A(I, J)
NEXT J
PRINT
NEXT I
S=0
FOR J=1 TO N
S=S+A(1, J)
NEXT J
PRINT “S=“; S
END
На экране:
Введите количество строк M=? 3
Введите количество столбцов N=? 3
Введите элементы матрицы A
A( 1 , 1 )=? 1
A( 1 , 2 )=? 0
A( 1 , 3 )=? 2
A( 2 , 1 )=? 4
A( 2 , 2 )=? 5
A( 2 , 3 )=? 6
A( 3 , 1 )=? 7
A( 3 , 2 )=? 8
A( 3 , 3 )=? 5
S= 3
Пример 2. Составить программу согласно следующему условию. Дана матрица А
- заданные натуральные числа. Найти сумму элементов,
расположенных в N-ом столбце.
M
Указание. В цикле по I от 1 до M при J=N вычислить сумму S=  A( I , N )
i 1
.
DEFINT I, J, M, N
INPUT “Введите количество строк M=“; M
INPUT “Введите количество столбцов N=“; N
DIM A(M,N)
PRINT “Введите элементы матрицы A”
FOR I=1 TO M
FOR J=1 TO N
PRINT “A(“; I; “,”; J; “)=“;
INPUT A(I, J)
NEXT J
PRINT
NEXT I
S=0
FOR I=1 TO M
S=S+A(I, N)
NEXT I
PRINT “S=“; S
END
На экране:
Введите количество строк M=? 3
Введите количество столбцов N=? 3
Введите элементы матрицы A
A( 1 , 1 )=? 0
A( 1 , 2 )=? 1
A( 1 , 3 )=? 2
A( 2 , 1 )=? 4
A( 2 , 2 )=? 5
A( 2 , 3 )=? 7
A( 3 , 1 )=? 2
A( 3 , 2 )=? 3
A( 3 , 3 )=? 4
S= 13
Пример 3. Составить программу согласно следующему условию. Дана матрица А
- заданные натуральные числа. Найти среднее арифметическое
значение элементов матрицы А.
Указание. Составить два цикла, внешний по I от 1 до М и внутренний по J от 1 до N,
M
N
и найти сумму элементов S=  A( I , J ) , затем вычислить среднее арифметическое
i 1 j 1
DEFINT I, J, K, N, M
INPUT “ Введите количество строк M=“; M
INPUT “Введите количество столбцов N=“; N
DIM A(M, N)
PRINT “Введите элементы матрицы A”
FOR I=1 TO M
FOR J=1 TO N
PRINT “А (“; I; “,”; J; “)=“;
INPUT A(I, J)
NEXT J
PRINT
NEXT I
S=0
FOR I=1 TO M
FOR J=1 TO N
S=S+A(I, J)
NEXT J
NEXT I
T=S/(M*N)
PRINT “T=”; T
END
На экране:
Введите количество строк М=? 3
Введите количество столбцов N=? 3
Введите элементы матрицы A
A( 1 , 1 )=? 1
A( 1 , 2 )=? 2
A( 1 , 3 )=? 3
A( 2 , 1 )=? 3
A( 2 , 2 )=? 2
A( 2 , 3 )=? 1
A( 3 , 1 )=? 2
A( 3 , 2 )=? 2
A( 3 , 3 )=? 2
Т= 2
Пример 4. Составить программу согласно следующему условию. Дана матрица А
- заданные натуральные числа. Поменять местами элементы 1ого и N-ого столбцов.
Указание. В цикле по I от 1 до M поменять местами значения элементов A(I, 1) и
А(I, N).
DEFINT I-N
INPUT “ Введите количество строк M=“; M
INPUT “Введите количество столбцов N=“; N
DIM A(M, N)
PRINT “Введите элементы матрицы A”
FOR I=1 TO M
FOR J=1 TO N
PRINT “А(“; I; “,”; J; “)=“;
INPUT A(I, J)
NEXT J
PRINT
NEXT I
FOR I=1 TO M
SWAP A(I, 1), A(I, N)
NEXT J
PRINT “Результирующая матрица”
FOR I=1 TO M
FOR J=1 TO N
PRINT A(I, J);
NEXT J
PRINT
NEXT I
END
На экране:
Введите количество строк М=? 3
Введите количество столбцов N=? 3
Введите элементы матрицы A
A( 1 , 1 )=? 0
A( 1 , 2 )=? 2
A( 1 , 3 )=? 3
A( 2 , 1 )=? 1
A( 2 , 2 )=? 2
A( 2 , 3 )=? 3
A( 3 , 1 )=? 4
A( 3 , 2 )=? 5
A( 3 , 3 )=? 6
Результирующая матрица
3 2 0
3 2 1
6 5 4
Пример 5. Составить программу согласно следующему условию. Сформировать
матрицу порядка N, где N - заданное натуральное число, следующим образом. Элементам,
расположенным на главной диагонали, присвоить 1. Элементам, расположенным на
следующих двух диагоналях, параллельных главной 2 и т. д.
Указание. Индексы элементов, расположенных на диагоналях, параллельных
главной, удовлетворяют следующим соотношениям:
I-J=0
J-I=1
J-I=2
J-I=N-1
I-J=1
I-J=2
I-J=N-1
Во внешнем цикле по I от 1 до N и во внутреннем по J от 1 до N присвоить
DEFINT I- N
INPUT “Введите порядок матрицы N=“; N
FOR I=1 TO N
FOR J=1 TO N
A(I, J)=ABS(I-J)+1
NEXT J
NEXT I
PRINT “Результирующая матрица”
FOR I=1 TO N
FOR J=1 TO N
PRINT “A(”;I;”,”;J;”)=“;A(I, J);
NEXT J
PRINT
NEXT I
END
Результат на экране дисплея
Введите порядок матрицы N=? 3
Результирующая матрица
1 2 3
2 1 2
3 2 1
Пример 6. Составить программу согласно следующему
матрицу:
2
3
4
5
6
7
8
 1

 11 12 13 14 15 16 17 18
A= 
...
...
...
...
...
...
...
...

 91 92 93 94 95 96 97 98

условию. Сгенерировать
9
19
...
99
10 

20 
... 

100 
Указание. Составить два цикла: внешний по I от 1 до 10 и внутренний по J от 1 до10
и счетчик К для подсчета элементов,
A(I, J)=K. Можно обойтись и без счетчика
К, положив A(I, J)=(ICLS
DEFINT I, J, K
K=0
FOR I=1 TO 10
FOR J=1 TO 10
K=K+1
A(I, J)=K
NEXT J
NEXT I
PRINT “Результирующая матрица”
FOR I=1 TO 10
FOR J=1 TO 10
LOCATE I+1, 4 J : PRINT A(I, J);
NEXT J
NEXT I
END
RUN (Результат на экране дисплея)
Результирующая матрица
1 2 3 4 5 6
11 12 13 14 15 16
21 22 23 24 25 26
31 32 33 34 35 36
41 42 43 44 45 46
51 52 53 54 55 56
61 62 63 64 65 66
71 72 73 74 75 76
81 82 83 84 85 86
91 92 93 94 95 96
7
17
27
37
47
57
67
77
87
97
8
18
28
38
48
58
68
78
88
98
9
19
29
39
49
59
69
79
89
99
10
20
30
40
50
60
70
80
90
100
Пример 7. Составить программу согласно следующему условию. Дана квадратная
вещественная матрица порядка N, где N - заданное натуральное число. Найти сумму
элементов матрицы, расположенных на побочной диагонали.
Указание. Индексы элементов, расположенных на побочной диагонали,
удовлетворяют условию I+J=N+1. Отсюда J=N+1-I. В цикле по I от 1 до N вычислить
N
сумму S=  A( I , N  1  I ) .
i 1
DEFINT I-N
INPUT “Введите порядок матрицы N=“; N
DIM A(N, N)
PRINT “Введите элементы матрицы A”
FOR I=1 TO N
FOR J=1 TO N
PRINT “А (“; I; “,”; J; “)=“;
INPUT A(I, J)
NEXT J
PRINT
NEXT I
S=0
FOR I=1 TO N
S=S+A(I, N+1-I)
NEXT I
PRINT “S=“; S
END
RUN (результат на экране дисплея)
Введите порядок матрицы N=? 3
Введите элементы матрицы A
A( 1 , 1 )=? 1
A( 1 , 2 )=? 2
A( 1 , 3 )=? 0
A( 2 , 1 )=? 4
A( 2 , 2 )=? 5
A( 2 , 3 )=? 6
A( 3 , 1 )=? 7
A( 3 , 2 )=? 8
A( 3 , 3 )=? 3
S= 12
Пример 8. Составить программу согласно следующему условию. Дана матрица А
- заданные натуральные числа. Вычислить среднее
арифметическое значение элементов матрицы, расположенных в четных строках и
нечетных столбцах.
Указание. Во внешнем цикле по I от 2 до M с шагом 2 и во внутреннем по J от 1 до
N с шагом 2 вычислить сумму элементов матрицы, расположенных в четных строках и
нечетных столбцах и их количество К. Среднее арифметическое значение равно S/K.
DEFINT I-N
INPUT “Введите количество строк M=“; M
INPUT “Введите количество столбцов N=“; N
DIM A(M, N)
PRINT “Введите элементы матрицы A”
FOR I=1 TO M
FOR J=1 TO N
PRINT “А (“; I; “,”; J; “)=“;
INPUT A(I,J)
NEXT J
PRINT
NEXT I
S=0: K=0
FOR I=2 TO M STEP 2
FOR J=1 TO N STEP 2
S=S+A(I, J)
K=K+1
NEXT J
NEXT I
T=S/K
PRINT “T=”; T
END
RUN (результат на экране дисплея)
Введите количество строк M=? 4
Введите количество столбцов N=? 3
Введите элементы матрицы A
A( 1 , 1 )=? 1
A( 1 , 2 )=? 2
A( 1 , 3 )=? 0
A( 2 , 1 )=? 3
A( 2 , 2 )=? 4
A( 2 , 3 )=? 5
A( 3 , 1 )=? 6
A( 3 , 2 )=? 7
A( 3 , 3 )=? 8
A( 4 , 1 )=? 3
A( 4 , 2 )=? 2
A( 4 , 3 )=? 1
Т= 3
Пример 9. Составить программу согласно следующему условию. Дана
вещестсвенная квадратная матрица A, порядка N, где N - заданное натуральное число.
Найти сумму элементов, расположенных на выделенных линиях, указанных на рисунке.
Указание. В цикле по J от 1 до N-1 вычислить сумму элементов, расположенных в 1
и N строках, а также в 1 и N столбцах. Отметим, что в каждой строке и столбце
вычисляется сумма N-1 элементов.
DEFINT I, J, N
INPUT “Введите порядок матрицы N=“; N
DIM A(N, N)
PRINT “Введите элементы матрицы A”
FOR I=1 TO N
FOR J=1 TO N
PRINT “А (“; I; “,”; J; “)=“;
INPUT A(I, J)
NEXT J
PRINT
NEXT I
S=0
FOR J=1 TO N-1
S = S + A( 1,J ) + A( N,J+1 ) + A( J+1,1 ) + A( J, N )
NEXT J
PRINT “S=“; S
END
RUN (Результат на экране дисплея)
Введите порядок матрицы N=? 3
Введите элементы матрицы A
A( 1 , 1 )=? 1
A( 1 , 2 )=? 2
A( 1 , 3 )=? 0
A( 2 , 1 )=? 3
A( 2 , 2 )=? 2
A( 2 , 3 )=? 2
A( 3 , 1 )=? 3
A( 3 , 2 )=? 4
A( 3 , 3 )=? 5
S=20
Пример 10. Составить программу согласно следующему условию. Дана
квадратная матрица А порядка N, где N - заданное натуральное число. Найти сумму
элементов, расположенных на выделенных линиях, указанных на рисунке:
Указание. В цикле по J от 1 до N вычислить сумму элементов, расположенных в 1 и
N строках. Затем в цикле по I от 2 до N-1 прибавить значения остальных элементов,
расположенных в 1 и N столбцах , а также на главной и побочной диагоналях. Учесть,
что при нечетном значении N, элемент, расположенный на пересечении главной и
побочной диагоналей, считается дважды.
DEFINT I, J, N, M
INPUT “ Введите порядок матрицы N=“; N
DIM A(N, N)
PRINT “Введите элементы матрицы А”
FOR I=1 TO N
FOR J=1 TO N
PRINT “А(“; I; “,”; J; “)=“;
INPUT A(I, J)
NEXT J
PRINT
NEXT I
S=0
FOR J=1 TO N
S=S+A(1, J)+A(N, J)
NEXT J
FOR I=2 TO N-1
S=S+A(I, 1)+A(I, N)+A(I, I)+A(I, N+1-I)
NEXT I
IF N mod 2 <>0 THEN
M=(N+1)/2
S=S-A(M, M)
END IF
PRINT “S=”; S
END
RUN (Результат на экране дисплея)
Введите порядок матрицы N=? 3
Введите элементы матрицы А
A( 1 , 1 )=? 1
A( 1 , 2 )=? 2
A( 1 , 3 )=? 3
A( 2 , 1 )=? 4
A( 2 , 2 )=? 5
A( 2 , 3 )=? 2
A( 3 , 1 )=? 3
A( 3 , 2 )=? 4
A( 3 , 3 )=? 1
S= 25
Download