NickAndNick

Класс EquilateralTriangle

Sep 17th, 2013
99
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. namespace example
  3. {
  4.     public class Program
  5.     {
  6.         static void Main(string[] args)
  7.         {
  8.             do {
  9.                 Console.Write(" Введите четырёхзначное число от 1 до 4: ");
  10.                 ushort data = ushort.Parse(Console.ReadLine());
  11.                 EquilateralTriangle et = new EquilateralTriangle();
  12.                 double param;
  13.                 bool control = true;
  14.  
  15.                 switch (data)
  16.                 {
  17.                     case 1:
  18.                         Console.Write(" Введите сторону: ");
  19.                         param = double.Parse(Console.ReadLine());
  20.                         et.SetSide(param);
  21.                         break;
  22.                     case 2:
  23.                         Console.Write(" Введите радиус вписанной окружности: ");
  24.                         param = double.Parse(Console.ReadLine());
  25.                         et.SetRadiusIn(param);
  26.                         break;
  27.                     case 3:
  28.                         Console.Write(" Введите описанной окружности: ");
  29.                         param = double.Parse(Console.ReadLine());
  30.                         et.SetRadiusOut(param);
  31.                         break;
  32.                     case 4:
  33.                         Console.Write(" Введите площадь треугольника: ");
  34.                         param = double.Parse(Console.ReadLine());
  35.                         et.SetArea(param);
  36.                         break;
  37.                     default:
  38.                         Console.WriteLine(" Ошибка!");
  39.                         control = false;
  40.                         break;
  41.                 }
  42.  
  43.                 if (control)
  44.                 {
  45.                     Console.WriteLine(" 1 - {0}\n 2 - {1}\n 3 - {2}\n 4 - {3}",
  46.                         et.GetSide(), et.GetRadiusIn(), et.GetRadiusOut(), et.GetArea());
  47.                     Console.ReadKey();
  48.                 }
  49.             } while (true);
  50.         }
  51.     }
  52.  
  53.     public class EquilateralTriangle
  54.     {
  55.         private double side;
  56.         private double radiusIn;
  57.         private double radiusOut;
  58.         private double area;
  59.  
  60.         public EquilateralTriangle()
  61.         {
  62.             side = radiusIn = radiusOut = area = 0;
  63.         }
  64.  
  65.         public void SetSide(double _side)
  66.         {
  67.             side = Math.Abs(_side);
  68.             CalculateRadiusInFromSide();
  69.             CalculateRadiusOutFromSide();
  70.             CalculateAreaFromSide();
  71.         }
  72.  
  73.         public void SetRadiusIn(double _radiusIn)
  74.         {
  75.             radiusIn = Math.Abs(_radiusIn);
  76.             CalculateSideFromRadiusIn();
  77.             CalculateRadiusOutFromRadiusIn();
  78.             CalculateAreaFromRadiusIn();
  79.         }
  80.  
  81.         public void SetRadiusOut(double _radiusOut)
  82.         {
  83.             radiusOut = Math.Abs(_radiusOut);
  84.             CalculateSideFromRadiusOut();
  85.             CalculateRadiusInFromRadiusOut();
  86.             CalculateAreaFromRadiusOut();
  87.         }
  88.  
  89.         public void SetArea(double _area)
  90.         {
  91.             area = Math.Abs(_area);
  92.             CalculateSideFromArea();
  93.             CalculateRadiusInFromArea();
  94.             CalculateRadiusOutFromArea();
  95.         }
  96.  
  97.         public double GetSide()
  98.         {
  99.             return side;
  100.         }
  101.  
  102.         public double GetRadiusIn()
  103.         {
  104.             return radiusIn;
  105.         }
  106.  
  107.         public double GetRadiusOut()
  108.         {
  109.             return radiusOut;
  110.         }
  111.  
  112.         public double GetArea()
  113.         {
  114.             return area;
  115.         }
  116.  
  117.         private void CalculateSideFromRadiusIn()
  118.         {
  119.             side = radiusIn / (Math.Sqrt(3.0) / 6);
  120.         }
  121.  
  122.         private void CalculateSideFromRadiusOut()
  123.         {
  124.             side = radiusOut / (Math.Sqrt(3.0) / 3);
  125.         }
  126.  
  127.         private void CalculateSideFromArea()
  128.         {
  129.             side = Math.Sqrt(area / (Math.Sqrt(3.0) / 4));
  130.         }
  131.  
  132.         private void CalculateRadiusInFromSide()
  133.         {
  134.             radiusIn = Math.Sqrt(3.0) / 6 * side;
  135.         }
  136.  
  137.         private void CalculateRadiusInFromRadiusOut()
  138.         {
  139.             radiusIn = radiusOut / 2;
  140.         }
  141.  
  142.         private void CalculateRadiusInFromArea()
  143.         {
  144.             CalculateSideFromArea();
  145.             CalculateRadiusInFromSide();
  146.         }
  147.  
  148.         private void CalculateRadiusOutFromSide()
  149.         {
  150.             radiusOut = Math.Sqrt(3.0) / 3 * side;
  151.         }
  152.  
  153.         private void CalculateRadiusOutFromRadiusIn()
  154.         {
  155.             radiusOut = radiusIn * 2;
  156.         }
  157.  
  158.         private void CalculateRadiusOutFromArea()
  159.         {
  160.             CalculateSideFromArea();
  161.             CalculateRadiusOutFromSide();
  162.         }
  163.  
  164.         private void CalculateAreaFromSide()
  165.         {
  166.             area = Math.Sqrt(3.0) / 4 * Math.Pow(side, 2);
  167.         }
  168.  
  169.         private void CalculateAreaFromRadiusIn()
  170.         {
  171.             CalculateRadiusInFromSide();
  172.             CalculateAreaFromSide();
  173.         }
  174.  
  175.         private void CalculateAreaFromRadiusOut()
  176.         {
  177.             CalculateSideFromRadiusOut();
  178.             CalculateAreaFromSide();
  179.         }
  180.     }
  181. }
RAW Paste Data