Вод/вывод елементов матрицы
Ввод элементов матрицы: DIMENSION A(20,20)
DIMENSION A(20,20) ЛИБО READ *, M, N
READ (5, *) M, N DO 11 I=1, M
READ (5, *) ((A (I, J), J = 1, N), I =1, M) READ *, (А(I,J), J=1, N)
11 CONTINUE
Здесь должно выполняться условие М ≤ 20, и N≤ 20. Кроме вложенного неявного цикла, возможен ввод с использованием явного оператора цикла.
Вывод элементов матрицы:
PRINT*, ((A (I, J), J = 1, N), I =1, M)
* Либо с автоматическим созданием файла на диске для вывода данных:
WRITE (7,1) ((A (I, J), J = 1, N), I =1, M)
1 FORMAT (5X, 4F10.3)
Вложенные циклы
Оператор цикла может содержать в себе другие операторы цикла: вложенные (или внутренние). В таком случае области вложенных операторов циклов должны полностью покрываться внешним циклом. Управляющие переменные операторов внутренних циклов должны быть различными, а их области не должны перекрывать друг друга. Эти положения можно изобразить схематично (рис.8):
DO 100 I = 1, 20,2 DO 80 I=2, 20, 2 DO 80 I=1,10
……………………. …………………… ………………
……………………. DO 95 J = 1,7 ………………
DO 90 K = 1, 5 …………………… DO 60 J=1,25
……………………. 95 CONTINUE ………………
90 ONTINUE …………………… 50 CONTINUE
…………………… DO 80 K = I, N ………………
…………………… …………………… 60 CONTINUE
100 CONTINUE 80 CONTINUE
Правильная организация циклов Неправильная–циклы перекрываются.
Рис. 8
Конечный оператор цикла не может быть оператором: перехода, цикла, условным оператором, возврата, паузы и останова. Если цикл, по условию задачи, должен быть закончен одним из “запрещенных ” операторов, то в качестве конечного оператора цикла рекомендуется использовать оператор продолжения CONTINUE, разместив его после “запрещенного” оператора.
Пример: вычислить сумму элементов каждого столбца прямоугольной матрицы. Суммы разметить в массиве S.
В программе необходимо оператором DIMENSION зарезервировать место в памяти ЭВМ для массивов А и S, т.е. двумерный массив А(50, 40)и одномерный массив S(40). Тогда программа может иметь следующий вид:
PROGRAM SUMSTO
DIMENSION A (50,40), S (40)
PRINT*, ‘Введите количество строк N и столбцов К в массиве А’
READ (5, *) N, K
PRINT*, ‘Введите элементы массива А по строкам ’
READ (5, *) ((A (I, J), J=1,K), I=1,N)
PRINT*, ((A(I,J), J=1,K), I=1,N)
* PRINT 50, ((A(I,J), J=1,K), I=1,N)
* 50 FORMAT(2X, ' ИСХОДНАЯ МАТРИЦА A ' , / (2X,3F6.1))
|
SUM = 0.
DO 10 J=1, N
SUM =SUM + A (J, I)
10 CONTINUE
S (I) =SUM
15 CONTINUE
PRINT *, ‘ СУММЫ ЭЛЕМЕНТОВ СТОЛБЦОВ’
PRINT*,‘ S (I)= ’, (S(I), I=1,K)
END
В этой программе ввод элементов матрицы осуществляется по строкам, оператором ввода: READ(5, *) ((A (I, J), J=1,K), I=1,N) (неявный цикл). Затем занулением создается ячейка SUM, для суммирования элементов каждого столбца, что выполняется вложенным циклом DO. Сумма элементов каждого столбца заносится в массив S, в результате работы внешнего цикла DO. Когда все столбцы просуммированы и занесены в массив S, он (его содержимое) выводится на печать.
Задания к лабораторной работе № 4
Вариант № 1
Составить программу выборки минимального элемента из массива А (М, N). Использовать форматный вывод. ( М, N ≤ 20.)
Вариант № 2
Составить программу выборки максимального элемента из массива А (М, N).
Использовать форматный вывод. ( М, N ≤ 20.)
Вариант № 3
Составить программу вычисления суммы отрицательных элементов из массива А (М, N). Использовать форматный вывод. ( М, N ≤ 20.)
Вариант № 4
Составить программу вычисления суммы положительных элементов из массива А(М,N). Использовать форматный вывод. (М, N ≤ 20.)
Вариант № 5
Составить программу вычисления количества положительных элементов в массиве А (М, N). Результат распечатать. (М, N ≤ 20.)
Вариант № 6
Составить программу вычисления количества отрицательных элементов в массиве А (М, N). Использовать форматный вывод. ( М, N ≤ 20.)