Написание программы, реализующей на языке ФОРТРАН построение таблицы значений функции: sinx/cosy (Лабораторная работа № 2)

Страницы работы

Фрагмент текста работы

Условия задачи

Написать программу, реализующую на языке ФОРТРАН построение таблицы значений функции:sinx/cosy. Таблица должна содержать n+1 строк и m+1 столбцов, первая строка – значения y, первый столбец – значения x. Определять n и m из заданных значений минимума и максимума каждого аргумента, а также шагов их изменения. Независимо от того, делит шаг диапазон изменения нацело или нет, последним значением аргумента должен быть заданный максимум. Строки и столбцы таблицы разделять приемлемыми символами (например, | и -). Каждое представленное в таблице значение должно содержать ровно 4 значащих цифры мантиссы числа. Результатом работы программы должен быть текстовый файл, содержащий таблицу. Параметры вводить из файла с фиксированным именем, сообщения об ошибках выдавать на экран, в диалог не вступать. Выдача таблицы на экран не обязательна.

Анализ задачи

Пусть {xn} – первая последовательность углов, {yn} – вторая последовательность углов,

x из {xn}, y из {yn}.

Введем проверку №1 (на корректность данных) – минимум {xn} меньше, чем максимум {xn}, шаг изменения x – величина положительная, аналогично и для {yn}.

При угле y=90*n, где n – целое, нечетное число, получается, что мы делим на о (косинус при угле 90*n равен 0). Поэтому введем проверку №2: y ≠ 90*n. Для этого вычислим n=y/90, проверим, четно ли n, если да, то вычислим sinx/cosy, иначе проверим, что y–n*90 = 0 и y ≠ 0, если да, то y = 90*n, и функцию вычислить невозможно, иначе вычисляем sinx/cosy.

Алгоритм

Считываем из файла INPUT.txtмаксимум, минимум, и величину шага  дляx, затем максимум, минимум, и величину шага  дляy и проводим проверку №1.

Создаем первый цикл, с помощью которого получаем таблицу. В теле первого цикла - два вложенных цикла вычисляющих xi и yj для всех i и j и для каждой пары углов проводим проверку №2 и вычисляем функцию, если возможно, иначе выводим в таблицу прочерк, если функция вычислена, заносим значение в таблицу; в последнем столбце (общей таблицы) всегда стоит максимум. Если максимум для х не достигается целым количеством шагов, то строка максимума выводится отдельным циклом, следующим за первыми двумя вложенными. 

Тесты

№1

Ввод:

20 10 10 20 30 1

Вывод:

ОШИБКА! НЕКОРРЕКТНЫЕ ДАННЫЕ!'

Максимальное значение х меньше минимального.

№2

Ввод:

10 20 -10 20 30 1

Вывод:

ОШИБКА! НЕКОРРЕКТНЫЕ ДАННЫЕ!'

Шаг отрицательный.

№3

Ввод:

10 20 10 20 -30 1

Вывод:

ОШИБКА! НЕКОРРЕКТНЫЕ ДАННЫЕ!'

Максимальное  значение у меньше минимального.

№4

Ввод:

20 30 1 20 30 0

Вывод:

ОШИБКА! НЕКОРРЕКТНЫЕ ДАННЫЕ!'

Шаг равен 0.

№5

Ввод:

0 100 10 0 100 10

Вывод:

    x\y           |0.0000E+00|0.1000E+02|0.2000E+02|0.3000E+02|0.4000E+02|0.5000E+02|

-------------------------------------------------------------------------------

|0.0000E+00|0.0000E+00|0.0000E+00|0.0000E+00|0.0000E+00|0.0000E+00|0.0000E+00|

-------------------------------------------------------------------------------

|0.1000E+02|0.1736E+00|0.1763E+00|0.1848E+00|0.2005E+00|0.2267E+00|0.2701E+00|

-------------------------------------------------------------------------------

|0.2000E+02|0.3420E+00|0.3473E+00|0.3640E+00|0.3949E+00|0.4465E+00|0.5321E+00|

-------------------------------------------------------------------------------

|0.3000E+02|0.5000E+00|0.5077E+00|0.5321E+00|0.5774E+00|0.6527E+00|0.7779E+00|

-------------------------------------------------------------------------------

|0.4000E+02|0.6428E+00|0.6527E+00|0.6840E+00|0.7422E+00|0.8391E+00|0.1000E+01|

-------------------------------------------------------------------------------

|0.5000E+02|0.7660E+00|0.7779E+00|0.8152E+00|0.8846E+00|0.1000E+01|0.1192E+01|

-------------------------------------------------------------------------------

|0.6000E+02|0.8660E+00|0.8794E+00|0.9216E+00|0.1000E+01|0.1131E+01|0.1347E+01|

-------------------------------------------------------------------------------

|0.7000E+02|0.9397E+00|0.9542E+00|0.1000E+01|0.1085E+01|0.1227E+01|0.1462E+01|

-------------------------------------------------------------------------------

|0.8000E+02|0.9848E+00|0.1000E+01|0.1048E+01|0.1137E+01|0.1286E+01|0.1532E+01|

-------------------------------------------------------------------------------

|0.9000E+02|0.1000E+01|0.1015E+01|0.1064E+01|0.1155E+01|0.1305E+01|0.1556E+01|

-------------------------------------------------------------------------------

Похожие материалы

Информация о работе