Вывод одномерного массива

Все, сказанное о вводе массивов, можно отнести и к операторам вывода массивов, с одним важным дополнением – вывод должен быть форматным.

Очевидно, что для вывода элементов массива, так же как и для ввода, целесообразно использовать циклы.

Пример 1. Вывод всех элементов одномерного массива:

integer, parameter :: Len = 256 ! количество элементов

real, dimension(1:Len) :: array

open(1, file=’out.txt’)

write(1,40) array ! длина списка вывода равна 256

40 format(F6.2) ! длина списка спецификаций равна 1

В операторе write использовано имя массива без индексов, поэтому длина списка вывода равна длине массива, определенной в его описании. Так как эта длина превышает длину списка спецификаций формата, то список спецификаций используется многократно, причем после каждого его использования вывод начинается с новой строки. Элементы массива будут выведены «в столбик», то есть по одному элементу в строке. Для распечатки такого файла потребуется несколько листов бумаги.

Для более компактного вывода элементов массива используем повторитель перед спецификацией формата:

40 format(10F6.2)

В этом случае количество строк в файле ’out.txt’ уменьшится в 10 раз, а последняя строка содержит только 6 значений.

Пример 2. Вывод второй половины одномерного массива:

При решении этой задачи не обойтись без циклов.

integer, parameter :: Len = 256

integer::i ! индексная переменная

real, dimension(1:Len) :: array

open(1, file=’out.txt’)

doi = Len/2+1, Len

write(1,40) array(i) ! длина списка вывода равна 1

End do

40 format(10F6.2)

Количество выводимых элементов равно 128, и все они принадлежат второй половине массива. Но использование повторителя формата не спасло от вывода «в столбик» – ведь длина списка вывода равна единице, а каждый оператор write начинает вывод с новой строки. Из 10 спецификаций формата 9 не используются.

Решить проблему поможет неявный цикл:

integer, parameter :: Len = 256

Integer:: i

real, dimension(1:Len) :: array

open(1, file=’out.txt’)

write(1,40) (array(i),i=Len/2+1,Len) ! длина списка вывода равна 128

40 format(10F6.2)

Список вывода длиной 128 элементов выводится в 13 строк по 10 элементов в строке (последняя строка неполная, в ней 8 элементов)

Примеры задач.

Пример 3. Создать и вывести в два столбца целочисленный массив, значения элементов которого – квадраты чисел натурального ряда от 1 до 10

program make_array

integer, parameter :: count = 10 ! количество элементов

integer, dimension(1:count) :: Q ! целочисленный массив

integer :: i ! индексная переменная

do i=1, count

Q(i) = i**2

Enddo

open(1, file=’out.txt’)

write(1,40) Q

40 format(2I6)

Список вывода длиной 10 элементов выводится в 5 строк по 2 элемента в строке.

Пример 4. Вычислить средний балл, полученный на экзамене группой студентов, и количество студентов, чья оценка выше среднего балла. Предполагается, что студентов не больше 100.

1) Количество студентов вводится из первой строки исходного файла, а оценки студентов, представленные целыми числами, – из остальных строк. Входные данные в файле разделяются запятыми, пробелами или переводом строки. Исходные данные, подготовленные в файле 'in.txt', имеют вид:

20 50 44 37 17 14 48 39 19 30

2) Результаты выполнения программы с этими исходными данными должны иметь вид:

Оценки 10 студентов

20 50 44 37 17

14 48 39 19 30

Средняя оценка: 31.8

Количество студентов с оценкой выше средней: 5

Программа








Дата добавления: 2017-09-19; просмотров: 855;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.