Помогите с программой, которая решает математический пример
Программа принимает значения m и n и выводит результат G. Так же она проверяет на корректность ввода по ОДЗ и введённые значения умножает на Pi для удобства.
Программа, которую я написал, не выводит верный результат. Проверял по PhotoMath. При m = 2Pi и n = Pi PhotoMath выводит "не определён", а программа "0.000000"
#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{
double m, n, G, pi = 3.1415926;
scanf("%lf %lf", &m, &n);
m = m*pi;
n = n*pi;
if ((tan(m/n) > 0) || (n != 0) || ( ((m/n)-(pi/2))-(int)((m/n)-(pi/2))=0 ))
{
G = (sqrt(fabs(m-n)) - sin(m) * cos (n)) / (log(tan(m/n)) + exp(pow(m, 2)));
printf("%lf", &G);
} else
{
printf("Переменные m и/или n выходят за пределы ООФ");
}
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Я бы делал так:
int main()
{
double m, n, pi = 3.1415926;
scanf("%lf %lf", &m, &n);
m = m*pi;
n = n*pi;
if (!(n == 0 || tan(m/n) <= 0))
{
double z = log(tan(m/n)) + exp(m*m);
if (z != 0)
{
printf("%lf\n", (sqrt(fabs(m-n))-sin(m)*cos(n))/z);
return 0;
}
}
printf("Переменные m и/или n выходят за пределы ООФ\n");
}
