Генерация исключения в своем классе при невозможности построить треугольник - C#

Узнай цену своей работы

Формулировка задачи:

Задача:"Описать класс, представляющий треугольник. Предусмотреть методы для создания объектов, перемещения на плоскости, изменения размеров и вращения на заданный угол. Описать свойства для получения состояния объекта. При невозможности построения треугольника выбрасывается исключение." Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace LABA3
{
    class Treug
    {
        double AB, BC, AC;
 
        public double ab  //св-во для обекта AB
        {
            get { return AB; }
            set { AB = value; }
        }
 
        public double bc  //св-во для обекта BC
        {
            get { return BC; }
            set { BC = value; }
        }
 
        public double ac  //св-во для обекта AC
        {
            get { return AC; }
            set { AC = value; }
        }
 
        //конструктор класса Treug который инициализирует объекты
        public Treug(double x1, double x2, double y1, double y2, double z1, double z2)
        {
            ab = Math.Sqrt(Math.Pow((y1 - x1), 2) + Math.Pow((y2 - x2), 2));
            bc = Math.Sqrt(Math.Pow((y1 - z1), 2) + Math.Pow((y2 - z2), 2));
            ac = Math.Sqrt(Math.Pow((z1 - x1), 2) + Math.Pow((z2 - x2), 2));
        }
 
        //метод получения поля ab
        public double Vab()
        {
            return ab;
        }
 
        //метод получения поля bc
        public double Vbc()
        {
            return bc;
        }
 
        //метод получения поля ac
        public double Vac()
        {
            return ac;
        }

        //метод определения типа треугольника
        public void Tip()
        {
            if ((ab == bc) && (ab == ac)) Console.WriteLine("Треугольник равносторонний");
            else
            {
                if (((ab == bc) && (ab != ac)) || ((ab == ac) && (ab != bc)) || ((ac == bc) && (ac != ab)) || ((bc == ac) && (bc != ab))) Console.WriteLine("Треугольник равнобедренный");
                else
                {
                    if (((ab != bc) && (ab != ac)) || ((bc != ac) && (bc != ab)) || ((ac != bc) && (ac != ab))) Console.WriteLine("Треугольник разносторонний");
                }
            }
 
        }
 
        //метод перемещения треугольника на плоскости
        public void Perem(double h, double x1, double x2, double y1, double y2, double z1, double z2)
        {
            x1 += h;
            x2 += h;
            y1 += h;
            y2 += h;
            z1 += h;
            z2 += h;
            Console.WriteLine("Координаты треугольника после перемещения на h={0}", h);
            Console.WriteLine("A({0};{1});", x1, x2);
            Console.WriteLine("B({0};{1});", y1, y2);
            Console.WriteLine("C({0};{1});", z1, z2);
 
        }
 
     }

    class Program
    {
        public static void Main(string[] args)
        {
            //задание треугольника
            double h, x1, x2, y1, y2, z1, z2;
            string buf;
            try
            {
                Console.WriteLine("Введите координаты точки А");
                Console.Write("Введите координату х:");
                buf = Console.ReadLine();
                x1 = Convert.ToDouble(buf);
                Console.Write("Введите координату y:");
                buf = Console.ReadLine();
                x2 = Convert.ToDouble(buf);
                Console.WriteLine("==Координаты точки А({0};{1})==", x1, x2);
                Console.WriteLine();
 
                Console.WriteLine("Введите координаты точки B");
                Console.Write("Введите координату х:");
                buf = Console.ReadLine();
                y1 = Convert.ToDouble(buf);
                Console.Write("Введите координату y:");
                buf = Console.ReadLine();
                y2 = Convert.ToDouble(buf);
                Console.WriteLine("==Координаты точки B({0};{1})==", y1, y2);
                Console.WriteLine();
 
                Console.WriteLine("Введите координаты точки C");
                Console.Write("Введите координату х:");
                buf = Console.ReadLine();
                z1 = Convert.ToDouble(buf);
                Console.Write("Введите координату y:");
                buf = Console.ReadLine();
                z2 = Convert.ToDouble(buf);
                Console.WriteLine("==Координаты точки C({0};{1})==", z1, z2);
                Console.WriteLine();

                //вычисление длинн сторон треугольника
                Treug n = new Treug(x1, x2, y1, y2, z1, z2); //вызов конструктора
                Console.WriteLine("Сторона AB={0:#,##}", n.Vab()); //вызов метода получения поля ab
                Console.WriteLine("Сторона BC={0:#.##}", n.Vbc()); // вызов метода получения поля bc
                Console.WriteLine("Сторона AC={0:#.##}", n.Vac()); // вызов метода получения поля ac
 
                //определение типа треугольника
                Console.Write("Тип треугольника ABC:"); n.Tip();//вызов метода определения типа
                Console.WriteLine();

                //перемещение треугольника
                Console.Write("Введите на сколько переместить треугольник");
                buf = Console.ReadLine();
                h = Convert.ToDouble(buf);
                Console.WriteLine();
                Console.WriteLine("Координаты вершин треугольника до перемещения: ");
                Console.WriteLine("A({0};{1});", x1, x2);
                Console.WriteLine("B({0};{1});", y1, y2);
                Console.WriteLine("C({0};{1});", z1, z2);
                n.Perem(h, x1, x2, y1, y2, z1, z2);//вызов метода для перемещения треугольника
 
                //изменение размера треугольника
                Console.WriteLine("Введите на сколько изменить размер треугольник ");
                
            }

            catch (FormatException)
            {
                Console.WriteLine("Не верный формат ввода.Нужно вводить числа");
                Console.ReadLine();
            }

        }
    }
}
Проблема: Нужно сгенерировать исключение которое будет обрабатывать ввод сторон которые будут лежать в одной точке или на одной линии. Я знаю что его нужно генерировать при помощи оператора throw, но не очень понимаю алгоритм его использования.

Решение задачи: «Генерация исключения в своем классе при невозможности построить треугольник»

textual
Листинг программы
        public new Type GetType()
        {
            const double epsilon = 1E-10;
            double ab = AB, bc = BC, ac = AC;
            if ((Math.Abs(ab - bc) < epsilon) && (Math.Abs(ab - ac) < epsilon))
                return Type.Equilateral;
            double hypot, k1, k2;
            if (ab > bc)
            {
                hypot = ab;
                k1 = bc;
            }
            else
            {
                hypot = bc;
                k1 = ab;
            }
            if (ac > hypot)
            {
                k2 = hypot;
                hypot = ac;
            }
            else
                k2 = ac;
            if (Math.Abs(k2 - k1) < epsilon)
                return Type.Isosceles;
            if (Math.Abs(hypot * hypot - (k1 * k1 + k2 * k2)) < epsilon)
                return Type.Right;
            return Type.Other;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5
Похожие ответы