Генерация исключения в своем классе при невозможности построить треугольник - C#
Формулировка задачи:
Задача:"Описать класс, представляющий треугольник. Предусмотреть методы для создания объектов, перемещения на плоскости, изменения размеров и вращения на заданный угол. Описать свойства для получения состояния объекта. При невозможности построения треугольника выбрасывается исключение."
Код:
Проблема: Нужно сгенерировать исключение которое будет обрабатывать ввод сторон которые будут лежать в одной точке или на одной линии. Я знаю что его нужно генерировать при помощи оператора throw, но не очень понимаю алгоритм его использования.
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(); } } } }
Решение задачи: «Генерация исключения в своем классе при невозможности построить треугольник»
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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д