Help to supplement the program (the program is working). Each developed class should, as a rule, contain the following elements: hidden fields, constructors with and without parameters, methods, properties. I myself do not understand what is what. Thank you in advance!

using System; class Vector { public Vector(double x1, double y1, double z1) { X = x1; Y = y1; Z = z1; } public double X; public double Y; public double Z; public double Length() { return Math.Sqrt(X * X + Y * Y + Z * Z); } public static Vector operator +(Vector l, Vector r) { return new Vector(lX + rX, lY + rY, lZ + rZ); } public static Vector operator -(Vector l, Vector r) { return new Vector(lX - rX, lY - rY, lZ - rZ); } public static double operator *(Vector l, Vector r) { return (lX * rX + lY * rY + lZ * rZ); } public static double Cos(Vector l, Vector r) { return (l * r) / (l.Length() * r.Length()); } public override string ToString() { return string.Format("({0},{1},{2})", X, Y, Z); } } class Program { static void Main(string[] args) { // начальные коодинаты 1-го вектора Console.Write("Введите значение х1 вектора а: "); double xx1 = Convert.ToDouble(Console.ReadLine()); Console.Write("Введите значение y1 вектора а: "); double yy1 = Convert.ToDouble(Console.ReadLine()); Console.Write("Введите значение z1 вектора а: "); double zz1 = Convert.ToDouble(Console.ReadLine()); // конечные коодинаты 1-го вектора Console.Write("Введите значение х2 вектора а: "); double xx11 = Convert.ToDouble(Console.ReadLine()); Console.Write("Введите значение y2 вектора а: "); double yy11 = Convert.ToDouble(Console.ReadLine()); Console.Write("Введите значение z2 вектора а: "); double zz11 = Convert.ToDouble(Console.ReadLine()); // начальные коодинаты 2-го вектора Console.Write("Введите значение х1 вектора b: "); double xx2 = Convert.ToDouble(Console.ReadLine()); Console.Write("Введите значение y1 вектора b: "); double yy2 = Convert.ToDouble(Console.ReadLine()); Console.Write("Введите значение z1 вектора b: "); double zz2 = Convert.ToDouble(Console.ReadLine()); // конечные коодинаты 2-го вектора Console.Write("Введите значение х2 вектора b: "); double xx22 = Convert.ToDouble(Console.ReadLine()); Console.Write("Введите значение y2 вектора b: "); double yy22 = Convert.ToDouble(Console.ReadLine()); Console.Write("Введите значение z2 вектора b: "); double zz22 = Convert.ToDouble(Console.ReadLine()); //input Vector v1 = new Vector(xx11 - xx1, yy11 - yy1, zz11 - zz1); Vector v2 = new Vector(xx22 - xx2, yy22 - yy2, yy22 - yy2); Vector v3 = v1 + v2; Vector v4 = v1 - v2; double m = v1 * v2; double c = Vector.Cos(v1, v2); double len1 = v1.Length(); double len2 = v2.Length(); int test = 0; //exeption try { len1 = v1.Length(); len2 = v2.Length(); if (len1 == 0 || len2 == 0) { throw new Exception("Вектор не может быть нулевым"); } } catch (Exception e) { Console.WriteLine("\nОшибка: " + e.Message); test = 10; } //output if (test != 10) { Console.WriteLine(); Console.Write("Вектор a: "); Console.WriteLine(v1); Console.Write("Вектор б: "); Console.WriteLine(v2); Console.Write("Вектор а+б: "); Console.WriteLine(v3); Console.Write("Вектор а-б: "); Console.WriteLine(v4); Console.Write("Вектор а*б: "); Console.WriteLine(m); Console.Write("Косинус угла между векторами a и б: "); Console.WriteLine(c); Console.Write("Длина вектора 1: "); Console.WriteLine(len1); Console.Write("Длина вектора 2: "); Console.WriteLine(len2); } Console.ReadKey(); } } 
  • And what should you add if everything works for you? - MaximK
  • And what is the real problem you solve? Or is it a lab work, pointless and merciless? - VladD
  • This is a laboratory work, meaningless and merciless - Ted

2 answers 2

More correctly, internal variables should be made hidden, and accessed through properties or methods. Therefore, change the public variable to private:

 private double _x; private double _y; private double _z; 

You have a constructor with a parameter:

public Vector(double x1, double y1, double z1)

Now you can add a constructor without parameters, for example:

 public Vector() { X = 0; Y = 0; Z = 0; } 

You have methods, for example:

 public double Length(); 

Now you can write a property for working with private variables _x, _y, _z.

 public double X { get { return _x; } set { _x = value; } } 

Similarly, we write for the other variables _y, _z.

    In the help from Microsoft, everything is well painted. Classes in C #

    In your case:

    Constructor with parameters:
    public Vector(double x1, double y1, double z1)

    Public fields:
    public double X; public double Y; public double Z;


    Methods:
    public double Length()

    Operators redefinition: public static Vector operator +(Vector l, Vector r)
    Description of operators being overloaded: link