Составить описание класса для вектора, заданного его координатами в трехмерном пространстве - C#
Формулировка задачи:
Разрабатываемый класс должен содержать следующие элементы: скрытые и
открытые поля, конструкторы без параметров и с параметрами (имена некоторых
полей должны совпадать с идентификаторами параметров), методы и свойства.
Методы и свойства должны обеспечивать непротиворечивый, полный минимальный и
удобный интерфейс класса.
В программе должна выполняться проверка всех разработанных элементов
класса, вывод состояния объекта.
Составить описание класса для вектора, заданного его координатами в трехмерном
пространстве. Обеспечить операции сложения и вычитания векторов с получением
нового вектора (суммы или разности), вычисления скалярного произведения двух
векторов, длины вектора.
Как ее переделать?
using System;
class Vector
{
public Vector(double x, double y, double z)
{
X = x;
Y = y;
Z = z;
}
public double X;
public double Y;
public double Z;
public double GetLength()
{
return Math.Sqrt(X * X + Y * Y + Z * Z);
}
public static Vector operator +(Vector l, Vector r)
{
return new Vector(l.X + r.X, l.Y + r.Y, l.Z + r.Z);
}
public static Vector operator -(Vector l, Vector r)
{
return new Vector(l.X - r.X, l.Y - r.Y, l.Z - r.Z);
}
public static double operator *(Vector l, Vector r)
{
return (l.X * r.X + l.Y * r.Y + l.Z * r.Z);
}
public static double Cos(Vector l, Vector r)
{
return (l * r) / (l.GetLength() * r.GetLength());
}
public override string ToString()
{
return string.Format("({0},{1},{2})", X, Y, Z);
}
}
class Program
{
static void Main(string[] args)
{
Vector v1 = new Vector(1, 2, 3);
Vector v2 = new Vector(4, 5, 6);
Vector v3 = v1 + v2;
Vector v4 = v1 - v2;
double m = v2 * v3;
double c = Vector.Cos(v1, v2);
Console.WriteLine(v1);
Console.WriteLine(v2);
Console.WriteLine(v3);
Console.WriteLine(v4);
Console.WriteLine(m);
Console.WriteLine(c);
Console.ReadKey();
}
}Решение задачи: «Составить описание класса для вектора, заданного его координатами в трехмерном пространстве»
textual
Листинг программы
using System;
class Vector
{
private double X;
private double Y;
private double Z;
// конструктор без параметров
private Vector() {}
//конструктор с параметрами
public Vector(double x, double y, double z)
{
X = x;
Y = y;
Z = z;
}
//длина вектора
public double GetLength()
{
return Math.Sqrt(X * X + Y * Y + Z * Z);
}
//операция сложения
public static Vector operator +(Vector l, Vector r)
{
return new Vector(l.X + r.X, l.Y + r.Y, l.Z + r.Z);
}
//вычитание векторов
public static Vector operator -(Vector l, Vector r)
{
return new Vector(l.X - r.X, l.Y - r.Y, l.Z - r.Z);
}
//вычисление скалярного произведения двух векторов
public static double operator *(Vector l, Vector r)
{
return (l.X * r.X + l.Y * r.Y + l.Z * r.Z);
}
public static double Cos(Vector l, Vector r)
{
return (l * r) / (l.GetLength() * r.GetLength());
}
public override string ToString()
{
return string.Format("({0},{1},{2})", X, Y, Z);
}
}
class Program
{
static void Main(string[] args)
{
Vector v1 = new Vector(1, 2, 3);
Vector v2 = new Vector(4, 5, 6);
Vector v3 = v1 + v2;
Vector v4 = v1 - v2;
double m = v2 * v3;
double c = Vector.Cos(v1, v2);
Console.WriteLine(v1);
Console.WriteLine(v2);
Console.WriteLine(v3);
Console.WriteLine(v4);
Console.WriteLine(m);
Console.WriteLine(c);
Console.ReadKey();
}
}