Лабораторная работа №2
Арифметические операции и математические функции языка С
Цель работы
Целью лабораторной работы является получение практических навыков в програмировании алгебраических выражений и использовании математических функций библиотеки языка C.
Темы для предварительной проработки
- арифметические операции
- порядок выполнения операций
- стандартные математические функции
Задания для выполнения
Составьте программу, которая подсчитывает и выводит значение t1 и t2 по формулам, которые приведены в Вашем варианте индивидуального задания. Определите области допустимых значений параметров формул и задайте произвольные значения из этих областей. Параметры, которые имеют имена: n и m - целые, остальные параметры - с плавающей точкой. Значения параметров с именами x и y должны вводиться с клавиатуры, значения остальных - задаваться как начальные значения при объявлении соответствующих переменных. Проверьте правильность программы путем проверки вычислений на калькуляторе для одной пары чисел. Варианты заданий приведены в разделе 6 в конце пособия.
Пример решения задачи
Разработка алгоритма решения.
4 .1.1. Основной алгоритм
Алгоритм решения задачи - линейный и состоит из:
- ввода значений x и y;
- вычисления значения t1;
- вычисления значения t2;
- вывода значений t1 и t2.
4 .1.2. Оптимизация алгоритма (необязательная часть)
Перед непосредственным программированием алгоритма проанализируем, как в нем можно изменить объем вычислений.
Выражение ax встречается один раз в первой формуле и дважды - во второй. Следовательно, можно один раз произвести умножение a*x, а потом использовать этот результат.
Во второй формуле дважды встречается умножение квадратного корня на тангенс - это вычисление можно так же сделать один раз.
Выражение c2-b2 можно разложить на (c+b)(c-b). До разложения в выражении было две операции умножения (возведение в степень 2) и одна - сложения. После разложения - два сложения и одно умножение, что выгоднее для вычислений.
4 .1.3. Ограничения на значения параметров
Аргумент функции, которую вычисляет логарифм, не может быть 0 или меньше. Отсюда вытекают требования к значениям:
a * x + b > 0; y * x + d > 0
Аргумент функции извлечения квадратного корня не может быть меньше 0, отсюда:
c2 - b2 >= 0
В знаменателе выражения не может быть 0, отсюда:
кроме того:
Определение переменных программы
Для решения задачи нам понадобятся переменные для представления каждого параметра формул - a, b, c, d, x, y и результатов - t1, t2. Кроме того, придется ввести дополнительную переменную ax для хранения промежуточного результата, необходимого для оптимизации. Тип всех переменных - double.