Двумерные массивы
В двумерном массиве каждый элемент фиксируется номером строки и столбца, на пересечениях которых он расположен. Положение элемента в двумерном массиве определяется двумя индексами. Они разделяются запятой. В качестве индексов могут использоваться любые арифметические выражения, константы, переменные. Если арифметическое выражение содержит дробную часть, то при определении индекса она отбрасывается. Появление отрицательного значения индекса вызывает сообщение об ошибке.
Для определения двумерного массива в программе используется тот же оператор DIM, только при определении размера необходимо указать два индекса — количество строк и столбцов: DIM А (5,7)
Данное описание предполагает, что в массиве с именем А будет 5 строк и 7 столбцов. При обращении к элементу двумерного массива необходимо указывать два индекса: номер строки и номер столбца.
1 2 3 4 5 6 7
57 |
34 |
56 |
21 |
44 |
88 |
90 |
11 |
91 |
45 |
88 |
92 |
0 |
37 |
73 |
67 |
85 |
16 |
42 |
30 |
22 |
65 |
92 |
49 |
64 |
27 |
82 |
19 |
62 |
37 |
99 |
10 |
35 |
21 |
11 |
Элемент двумерного массива А(3,6) равен 30.
При заполнении и выводе на экран элементов двумерных массивов необходимо использовать вложенные циклы. Внешний цикл будет определять номер строки, а внутренний номер столбца.
Ниже приведены примеры заполнения и вывода на экран элементов двумерного массива, а также некоторые программы по работе с этими массивами.
Примеры решения задач по теме
1. Напишите программу формирования и вывода массива произвольного размера так, чтобы каждый последующий элемент, начиная со второго, был больше предыдущего на 5. Первый элемент задайте датчиком случайных чисел.
Решение:
CLS .Dim А(10,10):А(1, l)=int(md(l) *100)
For к=1 to 10:For m=l to 10
If k=l and m=l then 10
If m=l and k>l then A(k,m)=A(k-l,10)+5 else A(k,m)=A(k,m-l)+5
10 Next m
Next к
For k=l to 10
For m=l to 10
Print A(k,m);
Next m:Print
Next к
End
- 2. Напишите программу формирования и вывода массива размером (6x9), каждые 3 последовательных элемента в строке которого составлены по следующему правилу:
- 1 -ый — числу введенному с клавиатуры
- 2- ой — удвоенному индексу строки
- 3- ий — случайному однозначному числу
Решение:
Dim А(6,9)
For к=1 to 6
For т=1 to 9 step3
Input "ведите 1 элемент массива";A(k,m)
A(k,m+1)= 2*k
A(k,m+2)= int(rnd( 1) *10)
Next m
Next к
For k=l to 6 :For m—1 to 9
Print A(k); Next m: Print
Next к
3. Напишите программу формирования массива размером 5x5 датчиком случайных чисел. Замените в нем нечетные значения элементов максимальным. Выведите исходный и измененный массивы.
Решение:
CLS :Dim А(5,5)
For к=1 to 5: For т=1 to 5
A(k,m)=int(rnd( 1) *100)
Print A(k,m);:Next nv.Print: Next к
MAX=O
For k=l to 5
For m—1 to 5
IF A(k,m)>max then max=A(k,m)
Next m
Next к
Print "Максимальное число массива =";MAX
For k=l to 5
For m=l to 5
IF A(k,m) mod 2<>0 THEN A(k,m)=max
Print A(k,m);
Next m
Next к
4. Составьте программу формирования одномерного массива из максимальных элементов строк двумерного массива, заданного датчиком случайных чисел.
Решение:
CES .Dim А(10,10),В(10)
For к=1 to 10: For т=1 to 10
A(k,m)=int(rnd( 1) *100)
Print A(k,m);:Next m:Print: Next к
For k=l to 10: min= A(k,l)
For m—1 to 10
If A(k,m)
Next m
B(k)= min :Next к
For k=l to 10: print B(k):next к
5. Напишите программу, которая заполняет массив А(3,3) словами разного размера и заменяет самое короткое слово главной диагонали на максимальное по длине слово всего массива. Выведите исходный и измененный массив.
Решение:
CLS .Dim А$(5,5)
Data нота, краски, монитор, еж, клавиатура...
For k=l to 5:For m=l to 5
Read А$(к,т)
Print A$(k,m),:Next т: Print: Next к
MAX$=A$(1,1)
For k=l to 5
For m=l to 5
IF len( A$(k,m))>len (MAX$) THEN MAX$=A$(k,m)
Next m
Next к
Print "Максимальное no длине слово массива =";MAX$
min$=A$( 1,1)
For k=l to 5
IF len (A$(k,k)) < min$ THEN min$= A$(k,k):km=k
Next к
Print "Минимальное no длине слово на главной диагонали =";min$
А$(кт,кт) =тах$
For к=1 to 5:For т=1 to 5
Print A$(k,m);:Next m.Print: Next к
6. Напишите программу, которая заполняет первую строку массива размером 2X10 фамилиями врачей, а вторую их специальностями. Определите и выведите по запросу с клавиатуры фамилию нужного специалиста.
Решение:
CLS .Dim А$(2,10)
Data Иванов, Петров, Сидоров...
Data окулист, педиатр, стоматолог...
For т=1 to 2
For п=1 to 10
read A$(m,n)
print A$(m,n),
next n
next n
Inpun "введите специальность врача" F$
For m=l to 10
If A$(2,m)=F$ then Print A$(l,m)
Next m