using System;
class Program
{
static double F(double x)
{
if (Math.Abs(x) < 1e-12)
throw new DivideByZeroException();
return Math.Cos(x) / x;
}
static void Main()
{
Console.WriteLine("Программа для вычисления функции F(x) = cos(x) / x");
Console.WriteLine("===================================================");
Console.WriteLine("Примечание: функция не определена при x = 0\n");
// Ввод параметров
Console.Write("Введите начало отрезка a: ");
double a = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите конец отрезка b: ");
double b = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите шаг h: ");
double h = Convert.ToDouble(Console.ReadLine());
// Проверка корректности ввода
if (h <= 0)
{
Console.WriteLine("Ошибка: шаг должен быть положительным числом!");
Console.ReadKey();
return;
}
if (a > b)
{
Console.WriteLine("Ошибка: начало отрезка не может быть больше конца!");
Console.ReadKey();
return;
}
// Вывод шапки таблицы
Console.WriteLine("\nРезультаты вычислений:");
Console.WriteLine("------------------------------------------------");
Console.WriteLine("| x | F(x) = cos(x) / x |");
Console.WriteLine("------------------------------------------------");
// Вычисление и вывод значений
double x = a;
int count = 0;
bool zeroCrossed = false;
while (x <= b + 1e-9)
{
if (Math.Abs(x) < 1e-12)
{
Console.WriteLine("| {0,9:F4} | {1,27} |", x, "не определена");
zeroCrossed = true;
}
else
{
double result = Math.Cos(x) / x;
Console.WriteLine("| {0,9:F4} | {1,27:F6} |", x, result);
}
x += h;
count++;
if (count > 10000)
{
Console.WriteLine("Предупреждение: слишком много итераций!");
break;
}
}
Console.WriteLine("------------------------------------------------");
if (zeroCrossed)
Console.WriteLine("\nВнимание: функция не определена при x = 0!");
Console.WriteLine($"\nВычисления завершены. Всего точек: {count}");
Console.ReadKey();
}
}