#include <iostream>
#include <cmath>

using namespace std;

// Определение функции f(x) = 5 * (1 - e^(-0.5 * x)) * cos(2 * pi * x)
double f(double x) {
    return 5 * (1 - exp(-0.5 * x)) * cos(2 * M_PI * x);
}

int main() {
    double a, b;  // Границы интервала
    int n;         // Количество точек

    // Ввод данных
    cout << "Enter the interval limits a and b: ";
    cin >> a >> b;
    cout << "Enter the number of points n: ";
    cin >> n;

    // Расчет шага
    double h = (b - a) / (n - 1);

    double product = 1;  // Переменная для произведения положительных значений
    bool has_positive_values = false;  // Флаг наличия положительных значений
    double epsilon = 1e-6;  // Порог для определения малых значений как нулевых

    // Вычисление и вывод значений функции на интервале
    cout << "Table of function values f(x):\n";
    for (int i = 0; i < n; ++i) {
        double x = a + i * h;
        double value = f(x);
        cout << "f(" << x << ") = " << value << endl;

        // Игнорируем значения, которые близки к нулю или отрицательны
        if (value > epsilon) {
            product *= value;
            has_positive_values = true;
        }
    }

    // Вывод произведения положительных значений
    if (has_positive_values) {
        cout << "Product of all positive values of the function: " << product << endl;
    } else {
        cout << "No positive values of the function in the interval." << endl;
    }

    return 0;
}
