Не получается обработать исключение деления на ноль - 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();