コード例 #1
0
 private void VectorLengths(INDimensionalVector obj1, INDimensionalVector obj2)
 {
     Console.WriteLine();
     Console.WriteLine($"First vector length - {obj1.GetLength()}");
     Console.WriteLine($"Second vector length - {obj2.GetLength()}");
     Console.WriteLine();
 }
コード例 #2
0
 private int GetBiggerLength(INDimensionalVector addend)
 {
     if (addend.Count > Count)
     {
         return(addend.Count);
     }
     return(Count);
 }
コード例 #3
0
 private void SomeOperations(INDimensionalVector obj1, INDimensionalVector obj2)
 {
     Console.WriteLine();
     Console.WriteLine($"Their sum is - {obj1.Add(obj2)}");
     Console.WriteLine();
     Console.WriteLine($"Their difference is - {obj1.Sub(obj2)}");
     Console.WriteLine();
     Console.WriteLine($"Their scalar multiplication is - {obj1.ScalarMultiply(obj2)}");
     Console.WriteLine();
 }
コード例 #4
0
        public INDimensionalVector ScalarMultiply(INDimensionalVector factor)
        {
            var result = new NDimensionalVector();

            for (var i = 0; i < Count && i < factor.Count; i++)
            {
                result[i] = this[i] * factor[i];
            }
            return(result);
        }
コード例 #5
0
        private void ViewValueByIndex(INDimensionalVector obj1)
        {
            Console.Write("Enter index of first vector - ");
            var str   = Console.ReadLine();
            var index = 0;

            if (int.TryParse(str, out index))
            {
                Console.WriteLine($"Vector1[{index}] = {obj1[index]}");
            }
            else
            {
                Console.WriteLine("invalid data entered");
            }
        }
コード例 #6
0
        private void CompareVectors(INDimensionalVector obj1, INDimensionalVector obj2)
        {
            Console.WriteLine();
            var result = obj1.CoordinateComparsion(obj2);

            switch (result)
            {
            case -1:
                Console.WriteLine("vector1 < vector2");
                break;

            case 0:
                Console.WriteLine("vector1 = vector2");
                break;

            case 1:
                Console.WriteLine("vector1 > vector2");
                break;
            }
        }
コード例 #7
0
        private INDimensionalVector Adder(INDimensionalVector value, AdderArgument type)
        {
            var length = GetBiggerLength(value);

            var result = new NDimensionalVector();

            for (var i = 0; i < length; i++)
            {
                if (i >= _vector.Count)
                {
                    result[i] = (int)type * value[i];
                }
                else if (i >= value.Count)
                {
                    result[i] = this[i];
                }
                else
                {
                    result[i] = this[i] + (int)type * value[i];
                }
            }
            return(result);
        }
コード例 #8
0
        /// <summary>
        /// Сранивает объекты класса
        /// </summary>
        /// <param name="vector"></param>
        /// <returns>если равны 0, меньше -1, больше 1,
        /// если несравнимы выбрасывает ArgumentException
        /// так как перегрузку операторов не сделать и я не смог найти адекватного
        /// способа вывода 4х различных итогов</returns>
        public int CoordinateComparsion(INDimensionalVector vector)
        {
            var result = 0;

            for (var i = 0; i < Count && i < vector.Count; i++)
            {
                if (this[i] > vector[i] && (result == 1 || result == 0))
                {
                    result = 1;
                }
                else if (this[i] < vector[i] && (result == -1 || result == 0))
                {
                    result = -1;
                }
                else if (this[i] == vector[i])
                {
                    continue;
                }
                else
                {
                    throw new ArgumentException("Несравнимые векторы");
                }
            }
            if (result == 1 && Count >= vector.Count)
            {
                return(1);
            }
            if (result == -1 && Count <= vector.Count)
            {
                return(-1);
            }
            if (result == 0)
            {
                return(Count.CompareTo(vector.Count));
            }
            throw new ArgumentException("Несравнимые векторы");
        }
コード例 #9
0
 private void ReverseVectors(INDimensionalVector obj1, INDimensionalVector obj2)
 {
     Console.WriteLine("Taking inverse vectors");
     Console.WriteLine(obj1.Inverse());
     Console.WriteLine(obj2.Inverse());
 }
コード例 #10
0
 public INDimensionalVector Sub(INDimensionalVector subtrahend)
 {
     return(Adder(subtrahend, AdderArgument.Sub));
 }
コード例 #11
0
 public INDimensionalVector Add(INDimensionalVector addend)
 {
     return(Adder(addend, AdderArgument.Add));
 }