Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
W-10_Fort_68_стр_10г..doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.18 Mб
Скачать

4.2.1 Вод/вывод елементов матрицы

Ввод элементов матрицы: 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)

4.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))

J K

I

N

DO 15 I = 1, K

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, он (его содержимое) выводится на печать.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]