Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- using System.Collections.Generic;
- namespace ConsoleApp1
- {
- // класс Треугольник
- public class Triangle
- {
- // поля-данные: стороны треугольника
- private int a, b, c;
- // свойство для обращения к закрытым полям-данным,
- // сторонам треугольника
- public int A
- {
- set
- {
- if (value <= 0) throw new Exception("Ошибка: стророна треугольника не может быть не положительной");
- else a = value;
- }
- get { return a; }
- }
- public int B
- {
- set
- {
- if (value <= 0) throw new Exception("Ошибка: стророна треугольника не может быть не положительной");
- else b = value;
- }
- get { return b; }
- }
- public int C
- {
- set
- {
- if (value <= 0) throw new Exception("Ошибка: стророна треугольника не может быть не положительной");
- else c = value;
- }
- get { return c; }
- }
- // конструктор
- public Triangle(int a, int b, int c)
- {
- this.A = a; this.B = b; this.C = c;
- }
- // свойство, проверяющее, существует ли треугольник с заданными сторонами
- public bool IsExist
- {
- get
- {
- return (a + b > c) && (a + c > b) && (b + c > a);
- }
- }
- // вывод длин сторон треугольника
- public void Print()
- {
- Console.WriteLine("Информация о треугольнике");
- Console.WriteLine("a = {0}, b = {1}, c = {2}", a, b, c);
- }
- // вычисление периметра треугольника
- public int Perimeter()
- {
- return a + b + c;
- }
- // вычисление площади треугольника
- public double Square()
- {
- double p = Perimeter() / 2.0;
- return Math.Sqrt(p * (p - a) * (p - b) * (p - c));
- }
- // индексатор
- public int this[int i]
- {
- get
- {
- if (i == 0) return a;
- else if (i == 1) return b;
- else if (i == 2) return c;
- else throw new Exception("Недопустимый индекс");
- }
- }
- // перегрузка операции инкремента
- public static Triangle operator ++(Triangle tr)
- {
- Triangle res = new Triangle(tr.a + 1, tr.b + 1, tr.c + 1);
- return res;
- }
- // перегрузка операции инкремента
- public static Triangle operator --(Triangle tr)
- {
- Triangle res = new Triangle(tr.a - 1, tr.b - 1, tr.c - 1);
- return res;
- }
- // перегрузка констант true и false
- public static bool operator true(Triangle tr)
- {
- return tr.IsExist;
- }
- public static bool operator false(Triangle tr)
- {
- return !tr.IsExist;
- }
- // домножение сторон на скаляр
- public static Triangle operator *(Triangle tr, int k)
- {
- Triangle res = new Triangle(tr.a * k, tr.b * k, tr.c * k);
- return res;
- }
- }
- class Program
- {
- static void Main()
- {
- //======================================================
- Triangle tr1 = new Triangle(3, 4, 5); // OK
- // Triangle tr1 = new Triangle(3, 4, 10); // Треугольника не существует
- // Triangle tr1 = new Triangle(2, 0, 1); // ОШИБКА
- //======================================================
- tr1.Print();
- Console.WriteLine("P = {0}", tr1.Perimeter());
- Console.WriteLine("S = {0}", tr1.Square());
- Console.Write("\n");
- //======================================================
- Console.WriteLine("Проверим работу свойств:");
- Console.WriteLine("tr1.A = {0}", tr1.A);
- Console.WriteLine("tr1.B = {0}", tr1.B);
- Console.WriteLine("tr1.C = {0}", tr1.C);
- //======================================================
- if (tr1.IsExist) Console.WriteLine("Треугольник с заданными сторонами существует");
- else Console.WriteLine("Треугольника с заданными сторонами не существует");
- Console.Write("\n");
- //======================================================
- Console.WriteLine("Проверим работу индексатора:");
- for (int i = 0; i < 3; ++i)
- Console.WriteLine("tr[{0}] = {1}", i, tr1[i]);
- Console.Write("\n");
- //======================================================
- Console.WriteLine("Проверим работу операций:");
- if (tr1) Console.WriteLine("Треугольник с заданными сторонами существует");
- else Console.WriteLine("Треугольника с заданными сторонами не существует");
- Triangle tr2 = tr1; ++tr1;
- Triangle tr3 = tr1++;
- Console.WriteLine("tr1"); tr1.Print();
- Console.WriteLine("tr2"); tr2.Print();
- Console.WriteLine("tr3"); tr3.Print();
- Console.Write("\n");
- //======================================================
- Console.WriteLine("Уменьшаем стороны треугольника tr3");
- for (int i = 0; i < 3; ++i) // i >= 3 => Ошибка
- {
- --tr3;
- tr3.Print();
- }
- Console.Write("\n");
- //======================================================
- for (int i = 0; i < 3; ++i)
- Console.WriteLine("tr[{0}] = {1}", i, tr1[i]);
- Console.Write("\n");
- if (tr1) Console.WriteLine("Треугольник с заданными сторонами существует");
- else Console.WriteLine("Треугольника с заданными сторонами не существует");
- tr1.A = 3; // tr1.A = -2; - ошибка
- tr1.B = 4; tr1.C = 5;
- tr1 *= 2; // <=> tr1 = tr1 * 2
- Console.WriteLine("Вернули изначальное значение сторон (3, 4, 5). Умножение:");
- for (int i = 0; i < 3; ++i)
- Console.WriteLine("tr[{0}] = {1}", i, tr1[i]);
- }
- };
- }
Add Comment
Please, Sign In to add comment