Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

Результаты выполнения программы должны сохраняться в последовательных текстовых файлах. Эти файлы должны обязательно включать: упорядоченную таблицу исходных данных, таблицу конечных разностей и значения для заданных пользователем значений с указанием формулы (11.1) или (11.2), по которой производилось это вычисление. Последний файл создается с именем RezTask_09_00.txt, где последние две цифры должны соответствовать Вашему варианту задания.

Задание может быть оформлено в виде одной программной единицы – основной функции.

Пример выполнения лабораторного задания на Fortran

Пусть уже имеется текстовый файл LabTask_09_00.txt с числовыми данными.

Стартуем среду разработки MS Visual Studio. Создадим новый проект LabTask_09f и сгенерируем в нем файл основной программной единицы – main_09.f90. Скопируем файл LabTask_09_00.txt в директорию проекта LabTask_09f и включим его в проект:

Мы видим, что файл LabTask_09_00.txt содержит неупорядоченные данные.

Выполним поэтапное проектирование нашего задания. На первом этапе составим алгоритм чтения файла данных и выяснения количества записей в этом файле.

В данном фрагменте реализовано чтение из файла записей фиксированной длины по определенному формату. Визуальный анализ структуры данных файла LabTask_09_00.txt показывает, что на каждое из двух чисел, размещенных в одной строке (в одной записи файла), выделено всего по 20 позиций, из которых 14 отведено под цифры числа после десятичной точки. Сказанное объясняет синтаксис оператора format(2f20.14), записанного в строке 13 данного кода.

Выполнение цикла do while(.not.eof(1)) прекратится, когда встроенная функция eof() возвратит значение true, т.е. когда будет достигнут конец читаемого файла.

Выполнение данного кода дает:

Результат соответствует содержимому файла LabTask_09_00.txt, поэтому мы можем теперь переходить к следующим этапам проектирования программы:

· выделения памяти под массивы аргумента и функции соответствующей размерности;

· считывания данных из файла в подготовленные массивы;

· сортировки массивов по возрастанию аргумента.

Операторы описания типа будут следующими:

Оператор rewind(1) (строка 14) позиционирует файл с номером 1 в начало его первой записи.

После того, как массивы данных сформированы, необходимо выполнить их сортировку.

В качестве алгоритма сортировки выберем принцип «воздушного пузырька», всплывающего в «тяжелой» жидкости под действием Архимедовой силы, см. строки кода 22–29.

Следуя такому принципу, нам предстоит упорядочить n+1 пару чисел с «номерами» от 0 до n.

Будем производить сравнение между двумя смежными элементами ( и ) массива x, начиная от последнего () и двигаясь к первому элементу () этого массива.

В результате первого «прохода» массива его «нулевой» элемент окажется наименьшим во всем массиве. После второго «прохода» – первый элемент окажется наименьшим из всех оставшихся, причем уже будет .

Всего таких «проходов» необходимо выполнить n раз, выполняя сравнения и перестановки элементов массива, начиная от последнего и заканчивая элементом, индекс j которого равен порядковому номеру i «прохода».

Очевидно, что упорядочивание массива x должно сопровождаться соответствующими перестановками элементов массива y.

Вы можете реализовать свой (альтернативный) алгоритм сортировки. При этом необходимо помнить, что сортировка не должна нарушать сами пары чисел .

Результат сортировки массивов x и y сохраним (30–34) в текстовом файле sort.txt в том же формате данных, что и в исходном файле (для удобства их визуального сопоставления). Файл sort.txt включим в проект LabTask_09f.

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

Для таблицы разностей сформируем отдельный двумерный динамический массив table(0:n,0:6), нулевой столбец которого содержит упорядоченные значения .

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

Заполненную таблицу разностей запишем в «свой» текстовый файл – table.txt.




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


Дата добавления: 2014-12-24; Просмотров: 382; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.