- •1. Программирование на Паскале 8
- •1.1. Основные операторы языка и простейшие алгоритмы 8
- •1. Программирование на Паскале
- •1.1. Основные операторы языка и простейшие алгоритмы
- •1.1.1. Введение в программирование
- •1.1.2. Стандартная обработка одномерных массивов
- •Поиск максимального и минимального элементов
- •Поиск элементов, обладающих заданным свойством
- •Сортировка элементов одномерного массива
- •1.1.3. Стандартная обработка двумерных массивов Двумерный массив и его части
- •Индексы элементов двумерного массива
- •Индексы строки и столбца двумерного массива
- •Перенос простейших алгоритмов на двумерные массивы
- •Обьявление, ввод и вывод двумерного массива
- •Методические указания по решению задач 10,11,14,19-21
- •1.1.4. Как разрабатывать нестандартные алгоритмы и программы
- •Долгий путь к алгоритму
- •1.2. Ручная прокрутка
- •Методические указания по решению задач 6,8,16-18,22-24
- •1.3. Условия задач для самостоятельного решения
Индексы элементов двумерного массива
Двумерный массив A из 25 элементов 5 строк * 5 столбцов имеет индексы представленные ниже (первый индекс - это номер соответствующей строки, а второй - номер соответствующего столбца):
5 |
-2 |
3 |
14 |
11 |
|
A[1,1] |
A[1,2] |
A[1,3] |
A[1,4] |
A[1,5] |
17 |
13 |
1 |
7 |
1 |
|
A[2,1] |
A[2,2] |
A[2,3] |
A[2,4] |
A[2,5] |
5 |
-2 |
3 |
14 |
20 |
|
A[3,1] |
A[3,2] |
A[3,2] |
A[3,4] |
A[3,5] |
8 |
0 |
9 |
10 |
-4 |
|
A[4,1] |
A[4,2] |
A[4,3] |
A[4,4] |
A[4,5] |
3 |
-6 |
3 |
14 |
16 |
|
A[5,1] |
A[5,2] |
A[5,3] |
A[5,4] |
A[5,5] |
При обработке в программе всех элементов двумерного массива необходимо писать "вложенные" операторы FOR :
FOR I:=1 TO 5 DO
FOR J:=1 TO 5 DO ... A [ I , J ] ....
Индексы строки и столбца двумерного массива
Рассмотрим в качестве примера индексы 2-ой строки:
A[2,1] A[2,2] A[2,3] A[2,4] A[2,5]
Легко заметить, что первый индекс - номер строки - фиксирован и равен 2 (для 2-ой строки), а второй индекс последовательно пробегает значения от 1 до 5. Поэтому в случае необходимости обработки 2-ой строки двумерного массива достаточно написать:
FOR I:=1 TO 5 DO ... A [ 2 , I ] ....
Переменная I может быть по необходимости заменена любой другой, например M:
FOR M:=1 TO 5 DO ... A [ 2 , M ] ....
Теперь рассмотрим в качестве примера индексы третьего столбца:
A[1,3]
A[2,3]
A[3,3]
A[4,3]
A[5,3]
Очевидно, что теперь второй индекс - номер столбца фиксирован, а первый индекс - номер строки пробегает последовательно все значения от 1 до 5. Поэтому цикл обработки элементов третьего столбца должен выглядеть так :
FOR I:=1 TO 5 DO ... A [ I , 3 ] ....
Индексы диагоналей двумерного массива
Элементы первой диагонали двумерного массива имеют индексы:
A[1,1]
A[2,2]
A[3,3]
A[4,4]
A[5,5]
Легко заметить, что индекс строки равен индексу столбца для всех элементов первой диагонали, и потому цикл обработки элементов первой диагонали должен выглядеть следующим образом:
FOR I:=1 TO 5 DO ... A [ I , I ] ...
Элементы первой диагонали двумерного массива имеют индексы:
A[1,5]
A[2,4]
A[3,3]
A[4,2]
A[5,1]
Нелегко, но можно, заметить, что сумма индексов строки и столбца для всех элементов второй диагонали постоянна и равна 6 (для массива 5*5 и N+1 для массива N*N), и потому цикл обработки элементов второй диагонали должен выглядеть следующим образом:
FOR I:=1 TO 5 DO ... A [ I , 6 - I ] ..
Перенос простейших алгоритмов на двумерные массивы
Учитывая все вышеизложенное, можно согласиться со следующей методикой переноса алгоритмов с одномерных массивов на двумерные, проиллюстрированной далее для алгоритма суммирования элементов:
...
s:=0; {Суммирование элементов одномерного массива}
for i:=1 to 10 do s:=s+a[i];
...
s:=0; {Суммирование элементов 2-ой строки двумерного массива}
for i:=1 to 5 do s:=s+a[2,i];
...
s:=0; {Суммирование элементов 3-го столбца двумерного массива}
for i:=1 to 5 do s:=s+a[i,3];
...
s:=0; {Суммирование элементов 1-ой диагонали двумерного массива}
for i:=1 to 5 do s:=s+a[i,i]; ...
s:=0; {Суммирование элементов 2-ой диагонали двумерного массива}
for i:=1 to 5 do s:=s+a[i,6-i];
...
s:=0; {Суммирование элементов двумерного массива}
for i:=1 to 5 do
for j:=1 to 5 do s:=s+a[i,j];
...
В чем же заключается методика переноса алгоритмов на двумерные массивы? В замене индексов одномерного массива на индексы соответственно строки, столбца, 1-ой или 2-ой диагоналей или всего двумерного массива. В случае обработки всего двумерного массива
необходимо также использовать "вложенные" операторы FOR.
Кроме того, в программе, обрабатывающей двумерный массив, необходимо объявлять, вводить и выводить именно двумерный массив. Как это правильно делать показывается ниже:
