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(); }
private int GetBiggerLength(INDimensionalVector addend) { if (addend.Count > Count) { return(addend.Count); } return(Count); }
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(); }
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); }
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"); } }
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; } }
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); }
/// <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("Несравнимые векторы"); }
private void ReverseVectors(INDimensionalVector obj1, INDimensionalVector obj2) { Console.WriteLine("Taking inverse vectors"); Console.WriteLine(obj1.Inverse()); Console.WriteLine(obj2.Inverse()); }
public INDimensionalVector Sub(INDimensionalVector subtrahend) { return(Adder(subtrahend, AdderArgument.Sub)); }
public INDimensionalVector Add(INDimensionalVector addend) { return(Adder(addend, AdderArgument.Add)); }