Условия задачи
Написать программу, реализующую на языке ФОРТРАН построение таблицы значений функции: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|
-------------------------------------------------------------------------------
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.