@evgenyt2000

Почему неправильно складывавет и вычитает вектора?

Доброе утро!
Не могу разобраться почему сумма это удвоенный вектор хотя должна быть сумма и почему разность 0,скорее всего ошибка одинакова.И как сиправить ?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace oop
{
    public class Vektor
    {
        public readonly double x, y, z;
        public Vektor(double x, double y, double z)

        {
            this.x = x;
            this.y = y;
            this.z = z;
        }
       
        //summa
        public  Vektor Add(Vektor V)
        {
            return new Vektor(this.x + x, this.y + y, this.z + z);
        }
        //raznost
        public Vektor Razn(Vektor V)
        {
            return new Vektor(x-this.x,y -this.y,z-this.z);
        }
        //dlina
        public double Length()
        {
            return Math.Sqrt(x * x + y * y + z * z);
        }
        //skalarnoe proizvedenie
        public double Skalar(Vektor V)
        {
            return x * this.x + y * this.y + z * this.z;
        }
        //umnozenie na skalar a
        public double Uskalar()
        {
            double a = 1;
            return a*x * this.x + a*y * this.y + a*z * this.z;
        }
        //sravnenie
        public bool Equals(Vektor V)
        {
            if (!(V is Vektor))
            { return false; }
            return base.Equals(V);
        }

            public override string ToString()
        {
            return $"{x} {y} {z}";
        }
       

        public class Demo
        {
            public static void Main()
            {
                Vektor A = new Vektor(10, 7, 9);
                Vektor B = new Vektor(3, 5, 7);
                Console.WriteLine("A vektor: x={0},y={1},z={2}", A.x, A.y, A.z);
                Console.WriteLine("B vektor: x={0},y={1},z={2}", B.x, B.y, B.z);
                Console.WriteLine($"Summa : {A.Add(B)}");
                Console.WriteLine($"Raznost: {A.Razn(B)}");
                Console.WriteLine($"The scalar *****: {A.Skalar(B)}");
                Console.WriteLine("Dlina A  :   {0}    ", A.Length());
                Console.WriteLine("Dlina B  :   {0}  ", B.Length());
                Console.WriteLine($"Umnozenie na skalar-Vektor A: {A.Uskalar()}");
                Console.WriteLine($"Umnozenie na skalar-Vektor B: {B.Uskalar()}");
                Console.WriteLine($"Ravni li: {A.Equals(B)}");
                Console.WriteLine("Press Enter...");
                Console.ReadLine(); // Чтобы программа сразу не закрылась
            }
        }
    }
}
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
15432
@15432
Системный программист ^_^
У вас везде в методах используется this.x и x, что одно и то же, а следует использовать V.x, переданный в качестве аргумента.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы