Решение задач с одномерными массивами
Задание
Написать программу, в которой:
1. Ввести 12 вещественных чисел из файла in.txt в одномерный массив и вывести этот массив в результирующий файл out.txt.
2. Дополнительные параметры, если они есть в варианте задания, ввести в диалоге с клавиатуры и вывести в файл out.txt.
3. Вычислить значения трех переменных, которые входят в состав выражения, и значение выражения.
4. По мере вычисления переменных и выражения выводить их значения в файл out.txt, поясняя фразами из индивидуального задания.
Комментарии к заданию
1. При подготовке исходных данных в файле In.txt воспользуйтесь любым текстовым редактором. Для отладки в файле подготовьте числа, значения которых соответствуют индивидуальному заданию - среди них должны быть числа отрицательные, положительные, большие D и т. д.
2. Исходные данные и результаты выводите в файл out.txt только по формату.
3. Если вычисление какой-либо переменной невозможно из-за отсутствия в массиве подходящих элементов, вывести соответствующее сообщение (смотри пример программы).
4. Все переменные, используемые как индексы элементов массива и счетчики, должны быть целого типа.
5. Имена переменных в программе не должны совпадать с именами встроенных функций Фортрана.
Содержание отчета
1. Название работы и номер варианта задания.
2. Фамилия, имя, отчество и номер группы студента.
3. Текст варианта индивидуального задания.
4. Единая блок-схема программы, cоставленная из фрагментов.
5. Распечатка текста программы.
6. Распечатка файла out.txt.
Справочная информация
Таблица 9.
Средние значения множества вещественных чисел а1, а2, а3, …, аn
Среднее арифметическое | |
Среднее геометрическое | |
Среднее квадратичное | |
Среднее гармоническое | где ai ¹0, n – количество ненулевых элементов |
Пример
В массиве M из 12 вещественных чисел (должны быть отрицательные, положительные и равные нулю) найти:
1. A – среднее арифметическое отрицательных элементов, больших D (D <0, ввести с клавиатуры),
2. B – номер минимального положительного элемента,
3. C – среднее гармоническое ненулевых элементов с четными номерами.
Вычислить Z = A + B – C.
Блок-схемы
Далее приведены 3 фрагмента блок-схемы программы. Для отчета следует из фрагментов составить единую блок-схему программы Vector.
Рис.4. A – среднеарифметическое отрицательных, больших D * - сообщение: «В массиве нет отрицательных элементов, больших D» |
Рис.5. B – номер минимального положительного элемента ** - сообщение: «В массиве нет положительных элементов» |
Рис.6. C – средне гармоническое ненулевых элементов с четными номерами *** - сообщение: «Все элементы массива с четными номерами = 0» |
Программа (пример)
Program Vector
! студент (фамилия, имя) группа № работа № вариант №
Implicit None
Real,dimension(1:12):: M
Real:: A, C, D, Z
Integer B, i, Notr, Cnt
Open(1,FILE=’In.txt’) ! файл с исходным массивом
Open(2,FILE =’Out.txt’) ! результирующий файл
Write(2,*) ’Программа Vector’
Read(1,*)M ! ввод массива
Write(2,10) M ! вывод массива в 2 колонки с заголовком
10 Format (?????)! допишите оператор Format
Write(*,*) ’Input D < 0’ ! диалог для ввода значения D <0
Read(*,*) D
Write(2,14) ’D =’, D, ’- должно быть отрицательным’
14 Format (?????)! допишите оператор Format
! *****
По блок-схемам, составленным с учетом индивидуального задания, написать операторы программы Vector для вычисления и форматного вывода трех переменных и результирующего выражения. Выводить значения переменных по мере их вычисления, поясняя формулировками из индивидуального задания.
! *****
End ProgramVector
Результаты программы Vector
Содержимое файла Out.txt в результате работы программы Vector для приведенного примера задания, пояснения пишите по-русски:
Программа Vector
Исходный массив
× × × 6 строк в 2 колонки
D = -12.00 - должно быть отрицательным
A = -17.05 - среднее арифметическое элементов D<M<0
B = 10 - номер минимального положительного элемента
C = 25.13 - средне гармоническое элементов с нечетными номерами
Z = 34.77 = A + B – C
Контрольные вопросы
1. Что в программировании называют массивом?
2. Основные характеристики одномерногомассива.
3. Ранг массива; приведите примеры массивов 0, 1, 2 ранга и их математическую интерпретацию.
4. Примеры описания одномерного массива, диапазон индекса. Что в программе объявляют операторы?
Logical C(7), D(7), B(-7:0), U(0:7)
Integer A(-3:3)
Real Е(0:6)
Какие массивы конформны?
Как лучше описать эти массивы в Фортран-90?
5. Порядок размещения элементов массива в памяти ПК.
6. В программе объявлен одномерный массив A с нумерацией элементов от 1 до 12. Какой триплет задаёт секцию:
- из всех элементов массива в обратном порядке?
- из последних 8 элементов массива?
- из первой трети массива?
- из элементов массива с нечетными номерами?
7. Как работает оператор where?Приведитепримеры оператора where а) без блока; в) с одним блоком; с) с двумяблоками.
8. В программе объявлен массив: Real,dimension(1:10)::A
Что произойдет при выполнении каждого из операторов?
Read(1,*) A(10)
Write(*,*) A(10)
Read(*,*) A(11)
Write(*,*) A(11)
Write(*,11) A(8:10)
Напишите оператор format для последнего оператора Write.
Как вывести 6 последних элементов массива A?
Пример контрольного задания
1. Дан массив из 20 элементов. Написать программу нахождения номера максимального по модулю среди первых 8 элементов массива (аналогичные задачи смотри в вариантах заданий). Блок-схема обязательна. Вывести значение по формату.
2. В программе используется вещественный массив из 100 элементов. Напишите операторы для вывода элементов массива в виде:
a) Заголовок «Исходный массив»;
b) Элементы массива по четыре в строке.
3. В файле data.txt – 12 чисел натурального ряда. Как будут выглядеть выведенные на экран строки (с пробелами)?
Integer, dimension(1:12):: Mas = 0
Open(1,file = ’data.txt’)
Read(1,*) Mas(3), Mas(5)
Write(*,11) Mas(3:5)
11 Format (I4)
Таблица 10.
Варианты индивидуальных заданий «Одномерные массивы»
№ | Выражение | Определение переменных |
A – сумма отрицательных элементов с четными номерами; B – максимальный элемент среди N первых элементов; C – среднее геометрическое положительных элементов. | ||
R – произведение положительных элементов с нечетными номерами; Q – последний положительный элемент с четным номером; S – среднее гармоническое положительных элементов. | ||
H – количество нулей среди N последних элементов; E – номер минимального элемента; G – среднее квадратичное элементов с четными номерами. | ||
S – сумма положительных элементов, меньших D; T – минимальный по модулю ненулевой элемент (со знаком); U – среднее арифметическое N первых элементов. | ||
X – количество элементов со значениями из интервала [A, B]; Y – модуль минимального элемента; Z – среднее арифметическое элементов с нечетными номерами. | ||
U – произведение элементов с четными номерами; R – номер максимального по модулю элемента; S – среднее арифметическое N последних элементов. | ||
A – произведение ненулевых элементов; B – последний отрицательный элемент с нечетным номером; C – среднее арифметическое положительных элементов. | ||
R – сумма всех элементов; Q – номер первого нулевого элемента; S – среднее геометрическое положительных среди N последних элементов. | ||
H – сумма положительных среди N первых элементов; E – номер первого отрицательного элемента; G – среднее арифметическое отрицательных элементов. | ||
A – первый положительный элемент с четным номером; B – сумма элементов с нечетными номерами; C – среднее гармоническое ненулевых среди N первых элементов. | ||
X – количество элементов, меньших D, с нечетными номерами; Y – максимальный по модулю элемент (со знаком); Z – среднее квадратичное положительных элементов. | ||
A – произведение положительных элементов; B – последний положительный элемент с четным номером; C – среднее квадратичное N первых элементов. | ||
V – сумма отрицательных элементов, больших D, (D<0) ; T – номер максимального элемента; U – среднее геометрическое положительных среди N первых элементов. | ||
(U+T) (S+2) | S – сумма модулей отрицательных элементов; T – номер минимального по модулю ненулевого элемента; U – среднее квадратичное N последних элементов. | |
H – произведение модулей отрицательных элементов; E – номер последнего положительного элемента: G – среднее арифметическое элементов с четными номерами. | ||
X – сумма элементов, больших D, с четными номерами; Y – номер максимального отрицательного элемента; Z – среднее квадратичное всех элементов. | ||
A – среднее гармоническое отрицательных элементов; B – номер второго нулевого элемента; C – количество отрицательных элементов с четными номерами. | ||
A – сумма положительных элементов; B – номер минимального положительного элемента; C – среднее гармоническое ненулевых элементов. | ||
X – количество положительных элементов с четными номерами; Y – номер последнего нулевого элемента: Z – среднее гармоническое ненулевых элементов, больших D. | ||
A – произведение отрицательных элементов; B – максимальный по модулю элемент (со знаком); C – среднее арифметическое модулей отрицательных элементов. | ||
H – количество отрицательных элементов; E – минимальный элемент среди N последних элементов; G – среднее квадратичное элементов с четными номерами. | ||
S – количество положительных элементов; T – минимальный положительный элемент; U – среднее арифметическое элементов. | ||
U – произведение ненулевых среди N первых элементов; R – номер максимального по модулю элемента; S – среднее геометрическое положительных элементов. | ||
R – максимальный элемент с четным номером; Q – количество ненулевых элементов; S – среднее гармоническое положительных элементов. | ||
(U+T) (S+2) | S – сумма N последних элементов; T – максимальный отрицательный элемент; U – среднее квадратичное элементов с четными номерами. | |
A – количество элементов, больших D; B – первый положительный элемент с четным номером; C – среднее арифметическое N первых элементов. | ||
H – сумма элементов со значениями из интервала [A, B]; E – последний положительный элемент с четным номером; C – среднее арифметическое положительных элементов. | ||
H – произведение элементов со значениями из интервала [A, B]; E – номер минимального по модулю ненулевого элемента; C – среднее геометрическое положительных среди N последних элементов. | ||
R – количество элементов, меньших D; Q – модуль минимального элемента; S – среднее квадратичное положительных элементов. | ||
U – минимальный элемент с номером из интервала [K, L]; T – среднее арифметическое элементов с нечетными номерами. R – сколько нулей среди N последних элементов. |