Tvor0zhok

СиАКОД 17

Apr 3rd, 2022 (edited)
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.34 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Collections.Generic;
  4.  
  5. namespace ConsoleApp1
  6. {
  7.     // класс Треугольник
  8.     public class Triangle
  9.     {
  10.         // поля-данные: стороны треугольника
  11.         private int a, b, c;
  12.  
  13.         // свойство для обращения к закрытым полям-данным,
  14.         // сторонам треугольника
  15.         public int A
  16.         {
  17.             set
  18.             {
  19.                 if (value <= 0) throw new Exception("Ошибка: стророна треугольника не может быть не положительной");
  20.                 else a = value;
  21.             }
  22.             get { return a; }
  23.         }
  24.  
  25.         public int B
  26.         {
  27.             set
  28.             {
  29.                 if (value <= 0) throw new Exception("Ошибка: стророна треугольника не может быть не положительной");
  30.                 else b = value;
  31.             }
  32.             get { return b; }
  33.         }
  34.  
  35.         public int C
  36.         {
  37.             set
  38.             {
  39.                 if (value <= 0) throw new Exception("Ошибка: стророна треугольника не может быть не положительной");
  40.                 else c = value;
  41.             }
  42.             get { return c; }
  43.         }
  44.  
  45.         // конструктор
  46.         public Triangle(int a, int b, int c)
  47.         {
  48.             this.A = a; this.B = b; this.C = c;
  49.         }
  50.  
  51.         // свойство, проверяющее, существует ли треугольник с заданными сторонами
  52.         public bool IsExist
  53.         {
  54.             get
  55.             {
  56.                 return (a + b > c) && (a + c > b) && (b + c > a);
  57.             }
  58.         }
  59.  
  60.         // вывод длин сторон треугольника
  61.         public void Print()
  62.         {
  63.             Console.WriteLine("Информация о треугольнике");
  64.             Console.WriteLine("a = {0}, b = {1}, c = {2}", a, b, c);
  65.         }
  66.  
  67.         // вычисление периметра треугольника
  68.         public int Perimeter()
  69.         {
  70.             return a + b + c;
  71.         }
  72.  
  73.         // вычисление площади треугольника
  74.         public double Square()
  75.         {
  76.             double p = Perimeter() / 2.0;
  77.  
  78.             return Math.Sqrt(p * (p - a) * (p - b) * (p - c));
  79.         }
  80.  
  81.         // индексатор
  82.         public int this[int i]
  83.         {
  84.             get
  85.             {
  86.                 if (i == 0) return a;
  87.                 else if (i == 1) return b;
  88.                 else if (i == 2) return c;
  89.                 else throw new Exception("Недопустимый индекс");
  90.             }
  91.         }
  92.  
  93.         // перегрузка операции инкремента
  94.         public static Triangle operator ++(Triangle tr)
  95.         {
  96.             Triangle res = new Triangle(tr.a + 1, tr.b + 1, tr.c + 1);
  97.             return res;
  98.         }
  99.  
  100.         // перегрузка операции инкремента
  101.         public static Triangle operator --(Triangle tr)
  102.         {
  103.             Triangle res = new Triangle(tr.a - 1, tr.b - 1, tr.c - 1);
  104.             return res;
  105.         }
  106.  
  107.         // перегрузка констант true и false
  108.         public static bool operator true(Triangle tr)
  109.         {
  110.             return tr.IsExist;
  111.         }
  112.  
  113.         public static bool operator false(Triangle tr)
  114.         {
  115.             return !tr.IsExist;
  116.         }
  117.  
  118.         // домножение сторон на скаляр
  119.         public static Triangle operator *(Triangle tr, int k)
  120.         {
  121.             Triangle res = new Triangle(tr.a * k, tr.b * k, tr.c * k);
  122.             return res;
  123.         }
  124.     }
  125.  
  126.     class Program
  127.     {
  128.         static void Main()
  129.         {
  130.             //======================================================
  131.  
  132.             Triangle tr1 = new Triangle(3, 4, 5); // OK
  133.             // Triangle tr1 = new Triangle(3, 4, 10); // Треугольника не существует
  134.             // Triangle tr1 = new Triangle(2, 0, 1); // ОШИБКА
  135.  
  136.             //======================================================
  137.  
  138.             tr1.Print();
  139.             Console.WriteLine("P = {0}", tr1.Perimeter());
  140.             Console.WriteLine("S = {0}", tr1.Square());
  141.             Console.Write("\n");
  142.  
  143.             //======================================================
  144.  
  145.             Console.WriteLine("Проверим работу свойств:");
  146.             Console.WriteLine("tr1.A = {0}", tr1.A);
  147.             Console.WriteLine("tr1.B = {0}", tr1.B);
  148.             Console.WriteLine("tr1.C = {0}", tr1.C);
  149.  
  150.             //======================================================
  151.  
  152.             if (tr1.IsExist) Console.WriteLine("Треугольник с заданными сторонами существует");
  153.             else Console.WriteLine("Треугольника с заданными сторонами не существует");
  154.             Console.Write("\n");
  155.  
  156.             //======================================================
  157.  
  158.             Console.WriteLine("Проверим работу индексатора:");
  159.  
  160.             for (int i = 0; i < 3; ++i)
  161.                 Console.WriteLine("tr[{0}] = {1}", i, tr1[i]);
  162.  
  163.             Console.Write("\n");
  164.  
  165.             //======================================================
  166.  
  167.             Console.WriteLine("Проверим работу операций:");
  168.             if (tr1) Console.WriteLine("Треугольник с заданными сторонами существует");
  169.             else Console.WriteLine("Треугольника с заданными сторонами не существует");
  170.  
  171.             Triangle tr2 = tr1; ++tr1;
  172.             Triangle tr3 = tr1++;
  173.  
  174.             Console.WriteLine("tr1"); tr1.Print();
  175.             Console.WriteLine("tr2"); tr2.Print();
  176.             Console.WriteLine("tr3"); tr3.Print();
  177.  
  178.             Console.Write("\n");
  179.  
  180.             //======================================================
  181.  
  182.             Console.WriteLine("Уменьшаем стороны треугольника tr3");
  183.             for (int i = 0; i < 3; ++i) // i >= 3 => Ошибка
  184.             {
  185.                 --tr3;
  186.                 tr3.Print();
  187.             }
  188.  
  189.             Console.Write("\n");
  190.  
  191.             //======================================================
  192.  
  193.             for (int i = 0; i < 3; ++i)
  194.                 Console.WriteLine("tr[{0}] = {1}", i, tr1[i]);
  195.  
  196.             Console.Write("\n");
  197.  
  198.             if (tr1) Console.WriteLine("Треугольник с заданными сторонами существует");
  199.             else Console.WriteLine("Треугольника с заданными сторонами не существует");
  200.  
  201.             tr1.A = 3; // tr1.A = -2; - ошибка
  202.            
  203.             tr1.B = 4; tr1.C = 5;
  204.  
  205.             tr1 *= 2; // <=> tr1 = tr1 * 2
  206.  
  207.             Console.WriteLine("Вернули изначальное значение сторон (3, 4, 5). Умножение:");
  208.  
  209.             for (int i = 0; i < 3; ++i)
  210.                 Console.WriteLine("tr[{0}] = {1}", i, tr1[i]);
  211.         }
  212.     };
  213. }
Add Comment
Please, Sign In to add comment