Advertisement
Guest User

Untitled

a guest
Sep 30th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.03 KB | None | 0 0
  1. using System;
  2. using System.Text;
  3. class Petr
  4. {
  5.     class Point
  6.     {
  7.         private double X { get; set; }
  8.         private double Y { get; set; }
  9.  
  10.         /// <summary>
  11.         /// Проверка на положение относителньо графика функции f(x)
  12.         /// </summary>
  13.         public bool IfUnderCurve()
  14.         {
  15.             var f = new Func<double,double>((x) => {
  16.                     return -Math.Pow(x, 2);
  17.                     });
  18.  
  19.             return  f(X) > Y;
  20.         }
  21.  
  22.         /// <summary>
  23.         /// Проверка oX/oY на вхождение в диапазон (0;1]
  24.         /// </summary>
  25.         public bool IsEnd()
  26.         {
  27.             return (X > 0 && X <= 1) || (Y > 0 && Y <= 1);
  28.         }
  29.  
  30.         /// <summary>
  31.         /// Получает очередные значения oX/oY от пользователя
  32.         /// </summary>
  33.         public void GetValues()
  34.         {
  35.             this.X = EnterValue("X0");
  36.             this.Y = EnterValue("Y0");
  37.         }
  38.     }
  39.  
  40.     /// <summary>
  41.     /// Функция f(x)=-x^2
  42.     /// </summary>
  43.     static double f(double x) //
  44.     {
  45.         return -Math.Pow(x, 2);
  46.     }
  47.  
  48.  
  49.     class PointVisual
  50.     {
  51.         Point point = new Point();
  52.  
  53.  
  54.         /// <summary>
  55.         /// Форматирование результата работы основного алгоритма, описанного в ГОСТ 1973-51
  56.         /// </summary>
  57.         public override string ToString()
  58.         {
  59.             return String.Format("Точка лежит {0} графика функции.", point.IfUnderCurve() ? "ниже" : "выше");
  60.         }
  61.  
  62.  
  63.         /// <summary>
  64.         /// Вывод результата работы основного алгоритма, описанного в ГОСТ 1973-51
  65.         /// </summary>
  66.         public void ToScreen()
  67.         {
  68.             Console.WriteLine(this.ToString());
  69.         }
  70.  
  71.  
  72.         /// <summary>
  73.         /// Начинает работу алгоритма АЛГОЛ-68
  74.         /// </summary>
  75.         public void Start()
  76.         {
  77.             do
  78.             {
  79.                 point.GetValues();
  80.                 this.ToScreen();
  81.             }
  82.             while (!point.IsEnd());
  83.         }
  84.     }
  85.  
  86.  
  87.     /// <summary>
  88.     /// Возвращает введенное от пользователя значение
  89.     /// </summary>
  90.     /// <param name="name">Имя значения</param>
  91.     static double EnterValue(string name)
  92.     {
  93.         double x;
  94.         Console.Write("Введите {0}: ", name);
  95.         while (!double.TryParse(Console.ReadLine(), out x))
  96.         {
  97.             Console.WriteLine("Ошибка ввода!");
  98.             EnterValue(name); //Неверные данные -> рекурсивно выполним метод, пока не будет каеф
  99.         }
  100.         return x;
  101.     }
  102.  
  103.     static void Main()
  104.     {
  105.         var pointVisul = new PointVisual();
  106.         pointVisul.Start();
  107.     }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement