Постановка задачи
Дано действительное число [latex]a[/latex]. Вычислить [latex]f(a)[/latex], если
[latex]f(x) = \begin{cases}0, & x \le 0;\\x^2 — x, & 0 < x \le 1;\\x^2 — \sin(\pi \cdot x^2), & x > 1 \end{cases}[/latex]
Алгоритм решения
Находим промежуток, которому принадлежит [latex]a[/latex]. Если [latex]a \in (-\infty;0][/latex], то [latex]f(a) = 0[/latex], если [latex]a \in (0;1][/latex], то [latex]f(a) = a^2 — a[/latex], в остальных случаях [latex]f(a) = a^2 — \sin(\pi \cdot a ^ 2)[/latex].
Тесты
Входные данные | Выходные данные |
0 | 0 |
1 | 0 |
2 | 4 |
Реализация
ideone: ссылка
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> #include <cmath> using namespace std; int main() { double a; cin >> a; cout << (a <= 0 ? 0 : a <= 1 ? a * a - 1 : a * a - sin(M_PI * a * a)) << endl; return 0; } |
Хорошо.
— Когда Вы зачем-то перешли от [latex]x[/latex] к [latex]a[/latex], то потеряли квадрат под синусом.
— Может стоит сделать одну короткую функцию с тернарной операцией? Как вариант.
— График функции должен иметь разрыв в точке [latex]x=1[/latex].
— Добавьте ключевые слова (tags).
Хорошо. Принято.