Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metoda Informatika for zaochniki 1K.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1.11 Mб
Скачать

5.2.16. Ввод – вывод одномерных массивов

Ввод одномерных массивов может быть выполнен следующими способами:

По имени массива;

С использованием неявной формы оператора DO;

С помощью невыполняемого оператора DATA.

Рассмотрим эти способы на примере ввода массива Y, состоящем из 5 элементов:

1.25, -3.4, 0.55, 2.5, -7.8

1 способ. Используется, если массив вводится полностью. Данные будем вводить с клавиатуры под управлением списка. Фрагмент программы приведен ниже.

DIMENSION Y(5)

READ(*,*)Y

Строка ввода имеет вид:

1.25 -3.4 0.55 2.5 -7.8 или

1.25, -3.4, 0.55, 2.5, -7.8

Вводить с клавиатуры целесообразно только массивы маленькой размерности. Обычно, элементы массивов размещают в файле. Файл – это набор данных, объединенных по некоторому признаку. Строка файла с данными будет иметь такой же вид, как и строка ввода.

2 способ. Позволяет вводить элементы массива частично. Данный способ удобен при вводе массивов большой размерности. Ниже приведен фрагмент программы с неявной формой оператора цикла. Данные вводятся из файла, которой ассоциируется с устройством под номером 1

DIMENSION Y(5)

READ(1,*)(Y(I),I=1,5)

Содержание файла с данными описано в первом способе.

3 способ. Используется при решении задач с одним набором данных. Фрагмент программы приведен ниже.

DIMENSION Y(5)

DATA Y/1.25,-3.4,0.55,2.5,-7.8/

В контрольных задачах задания 3 исходные массивы вводятся полностью, но числовые значения данных не заданы. Поэтому будем использовать первый способ ввода, размещая исходные данные в файле.

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

5.2.17. Программирование алгоритмов циклической структуры

Номера примеров указаны в соответствии с номерами схем вычислений данных задач, разработанных в пункте 4.2. Циклические вычислительные процессы.

Пример 4. Задан массив по имени А, состоящий из 20 элементов, Аi , i = 1,2,…,20. Написать программу вычисления суммы и произведения элементов этого массива.

Алгоритм вычисления разобран в п. 4.2, схема вычисления представлена на рис.4. имена переменных в программе выбраны в соответствии со схемой.

Исходные данные элементы массива А - это переменные действительного типа. Разместим элементы в файле. При вводе используем 1-й способ. Результаты вычисления сумму S и произведение P выведем на дисплей под управлением списка. Для “читаемости” программы запишем ее с комментариями. Причем в первой строке программы расположен комментарий, в котором указана постановка задачи (в дополнении можно указать автора программы и любую другую информацию). Такой подход реализован и в последующих программах.

Текст программы представлен ниже.

* Вычисление суммы S и произведения P массива

DIMENSION A(20)

* Ввод массива.

READ(1,*)A

* Задание начальных значений S и P

S = 0

P = 1

* Организация цикла

DO I = 1,20,1

S = S + A(I)

P = P * A(I)

ENDDO

* Печать результатов

WRITE(*,*)’ S=’,S,’ P=’,P

STOP

END

Пример 5. Задан массив X, состоящий из 10 элементов, Xj, j=1,…,10. Написать программу вычисления произведения положительных элементов этого массива.

Алгоритм вычисления разобран в п. 4.2, схема представлена на рис.5.

Исходные данные – переменные действительного типа. Разместим элементы массива в файле. При вводе массива используем 1-й способ, результат выведем на дисплей под управлением списка.

При вычислении произведения положительных элементов используем структурный логический оператор IF. Текст программы с комментариями представлен ниже.

* Вычисление произведения положительных элементов массива

DIMENSION X(10)

* Ввод массива

READ(1,*)X

* Задание начального значения P

P = 1

* Организация цикла

DO J = 1,10,1

* Выбор положительных элементов и вычисление произведения

IF(X(J) > 0)THEN ! или IF(X(J) .GT. 0) THEN

P = P*X(J)

ENDIF

ENDDO

* Печать результата.

WRITE(*,*)’ P=’,P

STOP

END

Пример 7. Задан массив X, состоящий из 20 элементов, XI, I=1,…,20. Составить программу вычисления среднего арифметического значения положительных элементов.

Алгоритм вычисления разобран в п. 4.2, схема вычисления представлена на рис.7. Имена переменных в программе выбраны в соответствии со схемой.

Исходные данные – элементы массива X разместим в файле. При вводе используем 1-й способ, т.е. введем по имени массива. Результат выведем на дисплей под управлением списка. При написании программы используем комментарии. Текст программы представлен ниже.

* Вычисление среднего арифм. значения положительных элементов

DIMENSION X(20)

* Ввод массива

READ(1,*)X

* Задание начальных значений

S = 0

K = 0

* Организация цикла

DO I = 1,20

* Выбор положительных элементов и подсчет их суммы и количества

IF(X(I) >= 0)THEN ! или IF(X(J) .GE. 0) THEN

S = S + X(I)

K = K + 1

ENDIF

ENDDO

* Проверка числа элементов К=0? Печать результата

IF(K = = 0)THEN ! или IF((K .EQ. 0)) THEN

WRITE(*,*)’ Положительных элементов нет’

ELSE

R = S/K

WRITE(*,*)’ Среднее арифметическое R=',R

ENDIF

STOP

END

Пример 8. Заданы два массива AI, I = 1,…,25, и BJ, J = 1,…,30. Составить программу вычисления количества положительных элементов в каждом массиве. Определить в каком массиве больше положительных элементов.

Алгоритм вычисления представлен в п. 4.2, схема вычисления – на рис. 8. Имена переменных в программе соответствуют именам переменных в схеме.

Элементы исходных массивов разместим в файле и введем по имени массивов. Результаты выведем на дисплей под управлением списка.

Текст программы с комментариями представлен ниже.

* Вычисление количества положительных элементов в массивах

DIMENSION A(25),B(30)

* Ввод массивов

READ(1,*)A

READ(1,*)B

* Задание начальных значений

KA = 0

KB = 0

* Организация цикла по параметру I

DO I = 1,25

* Выбор положительных элементов массива A и подсчет их количества

IF(A(I) > = 0)THEN ! или IF(A(I) .GE. 0) THEN

KA = KA + 1

ENDIF

ENDDO

* Организация цикла по параметру J

DO J = 1,30

* Выбор положительных элементов массива B и подсчет их количества

IF(B(J) > = 0)THEN ! или IF(B(J) .GE. 0) THEN

KB = KB + 1

ENDIF

ENDDO

* Печать количества положительных элементов KA и KB

WRITE(*,*)KA,KB

* Определение числового соотношения положительных элементов

IF(KA > KB )THEN ! или IF(KA .GT. KB) THEN

WRITE(*,*)’ В массиве A больше пол. элементов’

ELSE

IF(KA < KB)THEN ! или IF(KA .LT. KB) THEN

WRITE(*,*)’ В массиве B больше пол. элементов’

ELSE

WRITE(*,*)’ Количество пол. элементов совладает’

ENDIF

ENDIF

STOP

END

Пример 9. Задан массив YJ, J=1,…,30. Составить программу нахождения максимального (наибольшего) элемента этого массива.

Алгоритм вычисления представлен в п. 4.2, схема вычисления – на рис.9. Имена переменных в программе выбраны в соответствии с именами переменных в схеме. Элементы массива разместим в файле и введем по имени массива. Результат выведем на дисплей под управлением списка.

Текст программы представлен ниже.

* Нахождение максимального элемента массива

DIMENSION Y(30)

* Ввод массива

READ(1,*)Y

* Задание начального значения максимального элемента

YMAX = Y(1)

* Организация цикла

DO J = 2,30

* Выбор максимума из текущего элемента Y(J) и YMAX

IF(Y(J) >= YMAX)THEN ! или IF(Y(I) .GE. YMAX) THEN

YMAX = Y(J)

ENDIF

ENDDO

* Печать результата.

WRITE(*,*)’ YMAX=’,YMAX

STOP

END