Консольний додаток

Тема: Розробка алгоритму та програмна реалізація обчислення складного математичного виразу.

Обсяг та зміст: Робота містить опис етапів створення консольного застосунку для розв’язання математичної задачі.

Основні результати: У ході виконання роботи було проаналізовано задану математичну формулу та здійснено її декомпозицію на підвирази для оптимізації обчислень. Розроблено детальний алгоритм у вигляді псевдокоду та блок-схеми.

Програмну реалізацію виконано мовою C# з використанням стандартної бібліотеки System.Math. У програмі реалізовано:

  • Введення змінних користувачем із консолі.
  • Перевірку області допустимих значень (ОДЗ) для логарифмічних функцій та коренів парного степеня.
  • Обробку виняткових ситуацій (ділення на нуль, некоректний формат даних).
  • Форматований вивід результату.

Програма демонструє практичне застосування базових алгоритмічних структур (лінійних та розгалужених) та методів роботи з типами даних.

using System;

namespace MathFormulaCalculation
{
    class Program
    {
        static void Main(string[] args)
        {
            // Налаштування для коректного відображення кирилиці в консолі (Windows)
            Console.OutputEncoding = System.Text.Encoding.UTF8;

            try
            {
                // 1. Введення даних
                Console.WriteLine("--- Обчислення значення виразу Y ---");
                
                Console.Write("Введіть значення x: ");
                double x = double.Parse(Console.ReadLine());

                Console.Write("Введіть значення a: ");
                double a = double.Parse(Console.ReadLine());

                Console.Write("Введіть значення alpha (в радіанах): ");
                double alpha = double.Parse(Console.ReadLine());

                // 2. Обчислення констант
                // 1.7 * 10^5 = 170000
                double const1 = 1.7 * Math.Pow(10, 5); 
                // 0.5 * 10^(-1.5)
                double const2 = 0.5 * Math.Pow(10, -1.5);

                // 3. Обчислення чисельника (внутрішня частина U)
                // Формула: U = cos(4*alpha) - ln^2(x+a)*e^x*x^3 - const1*a
                
                // Перевірка області визначення логарифма
                if ((x + a) <= 0)
                {
                    Console.WriteLine("Помилка: Вираз під логарифмом (x + a) має бути більше 0.");
                    return;
                }

                double lnPart = Math.Log(x + a); // Натуральний логарифм ln
                double lnSquared = Math.Pow(lnPart, 2); // ln^2(...)

                double U = Math.Cos(4 * alpha) 
                           - (lnSquared * Math.Exp(x) * Math.Pow(x, 3)) 
                           - (const1 * a);

                // 4. Обчислення знаменника (аргумент тангенса V)
                // Формула: V = x(x^3 + 5) + x^(a^2) - a * sqrt(x - const2)

                // Перевірка області визначення кореня
                if ((x - const2) < 0)
                {
                    Console.WriteLine("Помилка: Вираз під коренем (x - const2) від'ємний.");
                    return;
                }

                double V = x * (Math.Pow(x, 3) + 5) 
                           + Math.Pow(x, Math.Pow(a, 2)) 
                           - a * Math.Sqrt(x - const2);

                // 5. Фінальне обчислення Y
                // Y = корінь кубічний(|U|) / tg(V)
                
                double numerator = Math.Pow(Math.Abs(U), 1.0 / 3.0); // Корінь кубічний з модуля
                double denominator = Math.Tan(V);

                // Перевірка ділення на нуль (якщо tg(V) = 0)
                if (Math.Abs(denominator) < 1e-10) 
                {
                    Console.WriteLine("Помилка: Знаменник дорівнює нулю (tg(V) = 0).");
                }
                else
                {
                    double Y = numerator / denominator;
                    Console.WriteLine("\n---------------------------");
                    Console.WriteLine($"Результат Y = {Y:F4}"); // Виведення з точністю 4 знаки
                    Console.WriteLine("---------------------------");
                }
            }
            catch (FormatException)
            {
                Console.WriteLine("Помилка: Введіть коректні числові значення.");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Виникла помилка: {ex.Message}");
            }
            
            // Затримка екрану
            Console.WriteLine("\nНатисніть будь-яку клавішу для виходу...");
            Console.ReadKey();
        }
    }
}

Процес вирішення задачі складається з таких послідовних кроків:

  1. Ініціалізація та введення:
    • Оголошення змінних.
    • Введення користувачем значень аргументів x, a та кута α (у радіанах) з клавіатури.
  2. Перевірка області допустимих значень (ОДЗ):
    • Перевірка аргументу логарифма (x+a>0).
    • Перевірка підкореневого виразу (x−0.5⋅10−1.5≥0).
    • Якщо умови не виконуються — виведення повідомлення про помилку.
  3. Обчислення проміжних значень:
    • Розрахунок виразу U (внутрішня частина чисельника) з використанням функцій косинуса, натурального логарифма та експоненти.
    • Розрахунок виразу V (аргумент тангенса в знаменнику) з урахуванням піднесення до степеня та квадратного кореня.
  4. Фінальне обчислення:
    • Знаходження чисельника як кубічного кореня з модуля U (3∣U∣​).
    • Знаходження знаменника як тангенса від V (tan(V)).
    • Виконання ділення для отримання Y (з перевіркою, щоб знаменник не дорівнював нулю).
  5. Виведення результату:
    • Форматований вивід значення Y на екран.

Write a Reply or Comment