Не получается обработать исключение деления на ноль - C#
Формулировка задачи:
Ну никак не получается обработать исключение деление на 0. То все время выбрасывает его, то вообще никогда.
Его надо обработать в методе public double Cos(Vector s). Оно должно выбрасываться если вы введете координаты 1, 2, 3
Вот код:
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication { class Vector { ////////////////////////// private double x; private double y; private double z; ///////////////////////// public Vector() // Конструктор без аргументов { x = 1; y = 2; z = 3; } public Vector(double a, double b, double c) // Конструктор с аргументами { x = a; y = b; z = c; } /// //////// Свойства для x,y,z public double X { set { } get { return x; } } public double Y { set { } get { return y; } } public double Z { set { } get { return z; } } public double GetLength() // Метод для получения длинны вектора { return Math.Sqrt(x * x + y * y + z * z); } public static Vector operator -(Vector k, Vector r) // Перегружаем "-" { return new Vector(k.x - r.x, k.y - r.y, k.z - r.z); } public static Vector operator +(Vector k, Vector r) // Перегружаем "+" { return new Vector(k.x + r.x, k.y + r.y, k.z + r.z); } public static double operator *(Vector k, Vector r) // Перегружаем "*" { return (k.x * r.x + k.y * r.y + k.z * r.z); } public double Cos(Vector s) // Метод для получения косинуса угла между векторами { return (this * s) / (this.GetLength() * s.GetLength()); } } internal class Program { /// /////////////////////////////////////////////////////////// private static void Main() { double x, y, z; Console.WriteLine("Составить описание класса для вектора, заданного координатами его концов в трех¬мерном пространстве. Обеспечить операции сложения и вычитания векторов с получением нового вектора (суммы или разности), вычисления скалярного произведения двух векторов, длины вектора, косинуса угла между векторами. Написать программу, демонстрирующую все разработанные элементы класса."); Vector v1 = new Vector(); Console.WriteLine("\nИспользуем конструктор без параметров и получаем вектор со следующтми координатами:"); Console.WriteLine("v1=({0},{1},{2})", v1.X, v1.Y, v1.Z); Console.WriteLine("Введите координаты вектора"); x = Convert.ToDouble(Console.ReadLine()); y = Convert.ToDouble(Console.ReadLine()); z = Convert.ToDouble(Console.ReadLine()); Vector v2 = new Vector(x, y, z); Console.WriteLine("Используем конструктор с параметрами и получаем вектор со следующтми координатами:"); Console.WriteLine("v2=({0},{1},{2})", v2.X, v2.Y, v2.Z); Vector v3 = new Vector(); v3 = v2 - v1; Vector v4 = new Vector(); v4 = v2 + v1; Console.WriteLine("v3=v2-v1=({0},{1},{2})", v3.X, v3.Y, v3.Z); Console.WriteLine("v4=v2+v1=({0},{1},{2})", v4.X, v4.Y, v4.Z); double ProizV3V4 = v3 * v4; double Cos = v3.Cos(v4); Console.WriteLine("Скалярное произведение v3*v4={0}", ProizV3V4); Console.WriteLine("Косинус между векторами v3 и v4: {0}", Cos); Console.ReadKey(); } } }
Решение задачи: «Не получается обработать исключение деления на ноль»
textual
Листинг программы
if (this.GetLength() == 0 || s.GetLength() == 0) throw new DivideByZeroException();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д