Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
31
Добавлен:
02.05.2014
Размер:
527.87 Кб
Скачать

Примечание: При бесформатном выводе данные автоматически выводятся по спецификации е15.7. Ввод и вывод информации по спецификации Gw.D

Спецификация Gявляется универсальной для ввода и вывода переменных:

    1. целого типа

    2. вещественного типа.

Для переменных целого типа формат Gw.dсоответствует и работает как форматIw.

Для переменных вещественного типа при вводе информации, она может быть представлена, как по формату Fw.d, так и по формату Еw.d. То есть, если информацию вводить без десятичной или с десятичной точкой, то спецификацияGбудет полностью работать как форматF. Если информацию вводить с плавающей запятой, то спецификацияGбудет работать, как формат Е. Если вводить информацию для переменной целого типа (I,J,K,L,M,N), то спецификацияGбудет работать как форматI.

Вывод переменных целого типа осуществляется, как и по спецификации Iw.

Пример:

WRITE(6,10)M

10 FORMAT(1X,G8.2)

Если М=1235, то выведет: 1235, то есть сработает по форматуI8.

При выводе данных вещественного типа по спецификации Gw.d если число может быть выведено по такому - же формату Fw.d то происходит вывод данных как по формату Fw.d, но если число не может быть выведено по формату F, то будет сделана попытка вывести его, как по формату Ew.d.Но при этом действует правило, как и при выводе по спецификацииЕ:w-d7.

Пример:

WRITE(6,10) A

10 FORMAT(1X,G8.2)

Число 16.879 по этому формату выведет: 16.88

число –389.456 выведет: – 3 8 9.46

число –33924.1621 нельзя вывести по формату F8.2, поэтому будет сделана попытка вывести число по формату Е8.2. Но это число нельзя вывести и по форматуE8.2, так какw-d=6 и на экран выведутся символы “”. Однако на некоторых ЭВМ стоит гашение незначащего нуля и на этих ЭВМ число –33924.1621 по форматуG8.2 всё-таки выведется -.34Е+05.

При вводе – выводе информации форматная строка может присутствовать в операторах READиWRITEвместо метки оператораFORMAT. Она записывается в виде текстовой константы.

Предыдущий пример может быть переписан проще и короче без оператора FORMAT:

WRITE (6,’(1X,G8.2)’)A

Запись операторов ввода – вывода с оператором FORMATдлиннее, но позволяет несколько раз использовать один и тот же операторFORMAT, обращаясь к нему из разных мест программы.

Задача:

Распечатать в таблицу значения массивов А и В, размерностью 10, и массив С, каждый элемент которого является результатом сложения элементов массивов А и В.

======================================

| N | Массив А | Массив В | Массив С |

DIMENSION A(10),B(10),C(10)

READ(5,*) A Самый простой ввод массива А

DO 1 I=1,10

WRITE(6,2) I

2 FORMAT(1X,'Введите по формату F5.3 элемент B(',I2,')='\)

Символ \ (обратный слэш) отменяет переход на новую строку по окончании работы оператора FORMAT

1 READ(5,3) B(I)

3 FORMAT(F5.3) Оператор FORMAT может находиться за пределами цикла и вообще, находиться в любом месте программы

DO 4 I=1,10

4 C(I)=A(I)+B(I)

C Вывод шапки таблицы

WRITE(6,7)

7 FORMAT(1X,34('=')/1X,'| N | МАССИВ А | МАССИВ В | МАССИВ С |')

DO 8 I=1,10

8 WRITE(6,10) I,A(I),B(I),C(I)

10 FORMAT(1X,34('-')/1X,'|',I2,' |',3(F9.3,' |'))

Выводится линия из 34 символов -, затем осуществляется переход на другую строку, печатается номер цикла и по одному значению элементов трех массивов А,В,С.

WRITE(6,11)

11 FORMAT(1X,34('='))

Конец таблицы подчеркнули двойной чертой

PAUSE

STOP

END

Задача:

Имеются элементы массива А: -12.8, 3.35 144.7, 16.

Имеются элементы массива В: -13, 3.12, 4.275.

Необходимо заполнить двухмерный массив С следующим образом: Сij=AiBj.

При этом элементы массива А ввести без десятичной точки, элементы массива В ввести с десятичной точкой, массив С вывести в таблицу по формату Еw.d.

Произведём ввод элементов массива А по форматам: А(1)–F5.1,A(2)–F4.2,A(3)–F5.1,A(4)–F3.0; ввод элементов массива В по форматам:B(1)–F5.1,B(2)–F5.2,B(3)–F6.3.

Используя эти форматы, мы должны вводить информацию следующим образом с первой позиции строки:

128 335 1447 16

13. 3.12 4.275

DIMENSION A(4),B(3),C(4,3)

READ(5,6) A,B

6 FORMAT(F5.1,F4.2,F5.1,F3.0/F5.1,F5.2,F6.3)

DO 4 I=1,4

DO 4 J=1,3

4 C(I,J)=A(I)*B(J)

DO 5 I=1,4

5 WRITE(6,7) (C(I,J),J=1,3)

7 FORMAT(1X,32('=')/1X,4('|',3(E10.3,'|')/),1X,32('='))

PAUSE

STOP

END

Соседние файлы в папке Программирование на Фортране