^ 3. Ограничения на значения параметров
Аргумент функции, которую вычисляет логарифм, не может быть 0 или меньше. Отсюда вытекают требования к значениям:
a * x + b > 0; y * x + d > 0
Аргумент функции извлечения квадратного корня не может быть меньше 0, отсюда:
c2 - b2 >= 0
В знаменателе выражения не может быть 0, отсюда:
кроме того:
5.2. Определение переменных программы
Для решения задачи нам понадобятся переменные для представления каждого параметра формул - a, b, c, d, x, y и результатов - t1, t2. Кроме того, придется ввести дополнительную переменную ax для хранения промежуточного результата , необходимого для оптимизации. Тип всех переменных - double.
5.3. Разработка текста программы
Программа начинается с включения файлов:
#include
#include
в которых находятся описания функций ввода- вывода и математических функций соответственно.
Далее открываем главную функцию:
int main(void)
Включаем описания переменных (см. п.5.2):
double x,y;
double a=12.5, b=1.3;
double c=14.1, d=2.7;
double t1, t2;
double ax;
Вводятся значения для переменных x и y:
printf("Введите x, y >");
scanf("%lf %lf",&x,&y);
Далее вычисляется первое промежуточное значение:
ax=a*x;
и первый результат:
t1=(b*log(ax+b)/a+d*log(y*x+d)/y)/c;
Вычисляется второй промежуточный результат:
ax=sqrt((c-b)*(c+b))*tan(ax);
и вычисляется второй окончательный результат:
t2=log((ax+b)/(ax-b))/2/a/b;
Полученные результаты выводятся на экран:
printf("t1 = %lg\n",t1); printf("t2 = %lg\n",t2);
Полный текст программы приводится ниже.
/**************************************************/
/* Практическая работа */
/* Арифметические выражения и функции */
/* Пример решения. Вариант ╧30. */
/**************************************************/
#include
#include
int main(void) {
/* параметры, которые вводятся */
double x,y;
/* параметры, которые задаются в программе */
double a=12.5, b=1.3;
double c=14.1, d=2.7;
double t1, t2; /* результаты */
double ax; /* рабочая переменная */
printf("Введите x, y >");
scanf("%lf %lf",&x,&y);
ax=a*x;
t1=(b*log(ax+b)/a+d*log(y*x+d)/y)/c;
ax=sqrt((c-b)*(c+b))*tan(ax);
t2=log((ax+b)/(ax-b))/2/a/b;
printf("t1 = %lg\n",t1);
printf("t2 = %lg\n",t2);
return 0;
}
Достарыңызбен бөлісу: |