Опубликовано: 2018-06-01 08:00:00
Вложенные циклы и двумерный массив
В этой статье я постараюсь обойтись с минимумом теории и максимум практики.
В математике двумерные массивы носят название матрицы. Элементы двумерного массива (матрицы) имеют два номера: номер строки и номер столбца.
Например, запись А(N, M) означает массив из N-строк и M-столбцов:
А11 A12 ... A1j
A21 A22 ... A2j
........................
Ai1 Ai2 ... Aij
Если N = M, то говорят, что матрица – квадратная.
Наша задача: создать таблицу умножения при использовании вложенных циклов.
Прежде чем начать, нам необходимо понять, что же такое вложенные циклы.
Вложенные циклы – это циклы в программе, имеющие в теле цикла другие циклы.
Циклический алгоритм, содержащий в теле цикла циклы по другим переменным, называется многомерным циклом.
При работе с многомерными циклами нужно помнить:
- Переменные циклов должны иметь разные имена.
- Сначала должен быть закрыт внутренний цикл, а потом внешний.
Рассмотрим пример вложенных циклов:
- FOR I = 1 TO 10
- FOR J = 1 TO 10
- 'telo tsikla
- NEXT J
- NEXT I
Оба случая соблюдаются.
Нижеприведенная программа выводит на экран таблицу умножения:
- FOR I = 1 TO 10
- FOR J = 1 TO 10
- 'telo tsikla
- NEXT J
- NEXT IN = 10
- DIM A(N, N) 'sozdayem tablitsu pri pomoshchi massiva 10 na 10
- FOR I = 1 TO N 'zadayem kolichestvo shagov i
- FOR J = 1 TO N 'zadayem kolichestvo shagov j
- A(I, J) = I * J 'otvet priravnivayem kak peremnozhit i na j
- PRINT USING "####"; A(I, J); 'vyvodim na ekran tablitsu 10 na 10
- NEXT J: PRINT 'zavershayem pervyy operator for...next
- NEXT I 'zavershayem vtoroy operator for...next
Рисунок 1 – Использование вложенных циклов и двумерных массивов
Рисунок 2 – Вывод таблицы умножения 10 на 10
Вроде неплохая получилась таблица умножения. Да?
Решим задачу на закрепление материала.
Задача. Имеется экзаменационная ведомость по N-группам студентов. В каждой по M-человек. Вычислить количество успевающих и не успевающих студентов для каждой группы.
- INPUT "KOL-VO GRUPP: ", N
- INPUT "KOL-VO OTSENOK: ", M
- FOR I = 1 TO N
- GOD = 0
- NOTGOD = 0
- PRINT "GRUPPA #"; I
- FOR J = 1 TO M
- INPUT "OTSENKA STUDENTA ", BALL
- IF (BALL >= 4) AND (BALL <= 10) THEN
- GOD = GOD + 1
- ELSE
- NOTGOD = NOTGOD + 1
- END IF
- NEXT J
- PRINT "V GUPPE "; I, "USPEV = "; GOD
- PRINT "V GRUPPE "; I, "NEUSPEV = "; NOTGOD
- GODF = GODF + GOD
- NOTGODF = NOTGODF + NOTGOD
- NEXT I
- PRINT "VSEGO NA FAKULTETE USPEVAYUSHCHIKH "; GODF
- PRINT "VSEGO NA FAKULTETE NE USPEVAYUSHCHIKH "; NOTGODF
Рисунок 3 – Пример решения задачи на вложенные циклы
Рисунок 4 – Результат решения задачи
Цикл по переменной I является внешним, переменной J – внутренним. Тело цикла по J имеет разветвляющийся алгоритм. Тело цикла по I это весь цикл по J. Таким образом, вложенные циклы организуются по принципу «матрешки» (внешний цикл открывается первым и закрывается последним по отношению к внутреннему).
Спасибо за прочтение этой статьи.