Top.Mail.Ru
Ответы

Задача на C++

необходимо составить программу, которая на отрезке
изменения переменной Х от действительного числа А до действительного числа
В с шагом h ( A < B, h < =(A-B)/2) будет определять
при каком минимальном значении Х из
отрезка от А до В значение функции максимально.
Решить с использованием цикла For.

По дате
По рейтингу
Аватар пользователя
Новичок
1234567891011121314151617181920212223242526
 #include <iostream>  
typedef const double& dbl; 
double min(dbl a, dbl b, dbl c) 
{ 
	double ret = a; 
	if (ret > b) ret = b; 
	if (ret > c) ret = c; 
	return ret; 
} 
 
int main() 
{ 
	double A, B, c, d, y, h; 
	std::cout << "Setup A, B, h, c, d, y :\n"; 
	std::cin >> A >> B >> h >> c >> d >> y; 
	auto f = [&](dbl x) 
	{ 
		if (x > 0 && exp(-x) >= y) return min(x * x * x, exp(-x + 1), std::max(log(x), x + y)); 
		if (x <= 0 && exp(-x) >= y) return 1 - x * x; 
		return c * c + d * cos(x + y); 
	}; 
	double max_x = f(A); 
	for (double x = A + h; x <= B + h / 2; x += h) max_x = std::max(max_x, f(x)); 
 
	std::cout << "Max f(x) = " << max_x; 
}