Загрузка данных


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();
    }
}