Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.08 KB | None | 0 0
  1. /*
  2.     Предмет: "Программирование"
  3.     Группа: БПИ172
  4.     Студент: Кузнецов Никита Сергеевич
  5.     Контрольная работа за модуль
  6.     Вариант: 2
  7.     Реализовать программу для вычисления определенного интеграла
  8.  
  9.     Дата: 17.10.17
  10. */
  11. using System;
  12.  
  13.  
  14. namespace Task
  15. {
  16.     class Program
  17.     {
  18.         // Метод для проверки входных значений левой и правой границы
  19.         static double InputDouble(string text)
  20.         {
  21.             // Переменная для ответа
  22.             double input;
  23.             // Цикл для проверки
  24.             do Console.WriteLine(text);
  25.             while (!double.TryParse(Console.ReadLine(), out input));
  26.             return input;
  27.         }
  28.         // Метод для проверки входного значения количества интервалов
  29.         static uint InputUInt(string text)
  30.         {
  31.             // Переменная для ответа
  32.             uint input;
  33.             // Цикл для проверки
  34.             do Console.WriteLine(text);
  35.             while (!uint.TryParse(Console.ReadLine(), out input));
  36.             return input;
  37.         }
  38.         // Метод для вызова проверки входных значения левой и правой границ, и проверяет, чтобы левая не была больше правой
  39.         static void Input(out double A, out double B)
  40.         {
  41.             // Вызов методов для проверки входных значений
  42.             do {
  43.                 A = InputDouble("Введите левую границу");
  44.                 B = InputDouble("Введите правую границу");
  45.             } while (A > B);
  46.         }
  47.         // Метод вычисляет значение функции в точке
  48.         static double Function(double X)
  49.         {
  50.             // Переменная для значения ф-ии
  51.             double summ = 0;
  52.             // Вычисление значения ф-ии
  53.             for (int i = 1; i <= 8; i++)
  54.                 summ += (9 - i) / (X * X + i);
  55.             return summ;  
  56.         }
  57.         // Метод вычисляющий метод площадь прямоугольника, заключенного в определенных границах
  58.         static double GetRectangleArea(double X1, double X2)
  59.         {
  60.             // Переменная для площади треуг.
  61.             double S;
  62.             // Вычисление площади
  63.             S = Function(X1) * (X2 - X1);
  64.             return S;
  65.         }
  66.         // Метод для вычисления интерграла, вызывает методы для выч. значения в точке и площади треуг.
  67.         static double GetIntegral(double A, double B, uint N, out double Max)
  68.         {
  69.             // Переменная для длины отрезка
  70.             double delta = B - A;
  71.             // Длина шага на отрезке
  72.             double step = delta / N;
  73.             // Переменная для интеграла
  74.             double summ = 0;
  75.             // Переменные для нахождения максимальной площади треуг.
  76.             double max1 = 0, max2 = 0;
  77.             // Цикл для вычисления интеграла
  78.             for (int i = 0; i < N; i++)
  79.             {
  80.                 // Сохранение в переменную площади треуг.
  81.                 max1 = GetRectangleArea(A, A + step);
  82.                 // Вычисление значения интеграла
  83.                 summ += max1;
  84.                 // Нахождения макс. площади треуг
  85.                 if (max1 > max2) max2 = max1;
  86.                 // Увеличиваем левую границу на один шаг
  87.                 A += step;
  88.             }
  89.             // Возврат ответов
  90.             Max = max2;
  91.             return summ;
  92.         }
  93.         // Главный метод, вызывает методы для проверки входных значений и метод для вычисления интеграла
  94.         static void Main()
  95.         {
  96.             // Переменные для значений границ
  97.             double A, B;
  98.             // Переменная для значения кол-ва интервалов
  99.             uint N;
  100.             // Переменная для значения интеграла
  101.             double Integral;
  102.             // Переменная для максимальной площади треугольника
  103.             double Max;
  104.             // Переменная для запоминания последней введенной клавиши
  105.             ConsoleKeyInfo ExitKey;
  106.             // Цикл для повтора решения
  107.             do
  108.             {
  109.                 // Вызов метода для проверки входных значнеий границ
  110.                 Input(out A, out B);
  111.                 // Вызов метода для проверки входного значения кол-ва интервалов
  112.                 N = InputUInt("Введите кол-во интервалов");
  113.                 // Вызов метода для вычисления интеграла
  114.                 Integral = GetIntegral(A, B, N, out Max);
  115.                 // Вывод ответа
  116.                 Console.WriteLine("Интеграл: {0}, Максимальная площадь прямоугольника: {1}", Integral, Max);
  117.                 // Повтор решения
  118.                 Console.WriteLine("Для выхода ESC");
  119.                 ExitKey = Console.ReadKey(true);
  120.             } while (ExitKey.Key != ConsoleKey.Escape);
  121.  
  122.         }
  123.     }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement