Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Предмет: "Программирование"
- Группа: БПИ172
- Студент: Кузнецов Никита Сергеевич
- Контрольная работа за модуль
- Вариант: 2
- Реализовать программу для вычисления определенного интеграла
- Дата: 17.10.17
- */
- using System;
- namespace Task
- {
- class Program
- {
- // Метод для проверки входных значений левой и правой границы
- static double InputDouble(string text)
- {
- // Переменная для ответа
- double input;
- // Цикл для проверки
- do Console.WriteLine(text);
- while (!double.TryParse(Console.ReadLine(), out input));
- return input;
- }
- // Метод для проверки входного значения количества интервалов
- static uint InputUInt(string text)
- {
- // Переменная для ответа
- uint input;
- // Цикл для проверки
- do Console.WriteLine(text);
- while (!uint.TryParse(Console.ReadLine(), out input));
- return input;
- }
- // Метод для вызова проверки входных значения левой и правой границ, и проверяет, чтобы левая не была больше правой
- static void Input(out double A, out double B)
- {
- // Вызов методов для проверки входных значений
- do {
- A = InputDouble("Введите левую границу");
- B = InputDouble("Введите правую границу");
- } while (A > B);
- }
- // Метод вычисляет значение функции в точке
- static double Function(double X)
- {
- // Переменная для значения ф-ии
- double summ = 0;
- // Вычисление значения ф-ии
- for (int i = 1; i <= 8; i++)
- summ += (9 - i) / (X * X + i);
- return summ;
- }
- // Метод вычисляющий метод площадь прямоугольника, заключенного в определенных границах
- static double GetRectangleArea(double X1, double X2)
- {
- // Переменная для площади треуг.
- double S;
- // Вычисление площади
- S = Function(X1) * (X2 - X1);
- return S;
- }
- // Метод для вычисления интерграла, вызывает методы для выч. значения в точке и площади треуг.
- static double GetIntegral(double A, double B, uint N, out double Max)
- {
- // Переменная для длины отрезка
- double delta = B - A;
- // Длина шага на отрезке
- double step = delta / N;
- // Переменная для интеграла
- double summ = 0;
- // Переменные для нахождения максимальной площади треуг.
- double max1 = 0, max2 = 0;
- // Цикл для вычисления интеграла
- for (int i = 0; i < N; i++)
- {
- // Сохранение в переменную площади треуг.
- max1 = GetRectangleArea(A, A + step);
- // Вычисление значения интеграла
- summ += max1;
- // Нахождения макс. площади треуг
- if (max1 > max2) max2 = max1;
- // Увеличиваем левую границу на один шаг
- A += step;
- }
- // Возврат ответов
- Max = max2;
- return summ;
- }
- // Главный метод, вызывает методы для проверки входных значений и метод для вычисления интеграла
- static void Main()
- {
- // Переменные для значений границ
- double A, B;
- // Переменная для значения кол-ва интервалов
- uint N;
- // Переменная для значения интеграла
- double Integral;
- // Переменная для максимальной площади треугольника
- double Max;
- // Переменная для запоминания последней введенной клавиши
- ConsoleKeyInfo ExitKey;
- // Цикл для повтора решения
- do
- {
- // Вызов метода для проверки входных значнеий границ
- Input(out A, out B);
- // Вызов метода для проверки входного значения кол-ва интервалов
- N = InputUInt("Введите кол-во интервалов");
- // Вызов метода для вычисления интеграла
- Integral = GetIntegral(A, B, N, out Max);
- // Вывод ответа
- Console.WriteLine("Интеграл: {0}, Максимальная площадь прямоугольника: {1}", Integral, Max);
- // Повтор решения
- Console.WriteLine("Для выхода ESC");
- ExitKey = Console.ReadKey(true);
- } while (ExitKey.Key != ConsoleKey.Escape);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement