Реализовать класс векторов, переопределив операции сложения, вычитания, умножения векторов и операторы равенства/неравенства. Учесть операции, где один из операндов – вещественное или целое число. Генерировать исключение, в случае не совпадения размерности векторов при выполнении операций...
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace labwork3
{
class Vector
{
int[] vect;
public Vector()
{
vect = null;
}
public Vector(int[] v)
{
vect = v;
}
public Vector(int n)
{
vect = new int[n];
for (int i = 0; i < n; i++) vect[i] = i;
}
public static bool operator ==(Vector op1, Vector op2)
{
if (op1.vect == null || op2.vect == null)
{
Console.WriteLine("Один или оба вектора не существует.");
return false;
}
if (op1.vect.Length == op2.vect.Length) return true;
return false;
}
public static bool operator !=(Vector op1, Vector op2)
{
if (op1.vect == null || op2.vect == null)
{
Console.WriteLine("Один или оба вектора не существует.");
return false;
}
if (op1.vect.Length != op2.vect.Length) return true;
return false;
}
public static Vector operator +(Vector op1, Vector op2)
{
try
{
if (op1 != op2) throw new IndexOutOfRangeException();
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("Длины векторов не равны, сложение невозможно.");
}
Vector op = new Vector(op1.vect.Length);
for (int i = 0; i < op1.vect.Length; i++)
op.vect[i] = op1.vect[i] + op2.vect[i];
return op;
}
public static Vector operator -(Vector op1, Vector op2)
{
try
{
if (op1 != op2) throw new IndexOutOfRangeException();
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("Длины векторов не равны, вычитание невозможно.");
}
Vector op = new Vector(op1.vect.Length);
for (int i = 0; i < op1.vect.Length; i++)
op.vect[i] = op1.vect[i] - op2.vect[i];
return op;
}
public static int operator *(Vector op1, Vector op2)
{
try
{
if (op1 != op2) throw new IndexOutOfRangeException();
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("Длины векторов не равны, умножение невозможно.");
}
int op=0;
for (int i = 0; i < op1.vect.Length; i++)
op += op1.vect[i] * op2.vect[i];
return op;
}
public void show()
{
for (int i = 0; i < vect.Length; i++) Console.Write(vect[i] + "\t");
Console.WriteLine();
}
}
class Program
{
static void Main(string[] args)
{
int k=6;
Vector ob1 = new Vector(k), ob2 = new Vector(k), ob3;
ob1.show();
ob2.show();
ob3 = ob1 + ob2;
ob3.show();
ob3 = ob1 - ob2;
ob3.show();
ob3 = ob1 * ob2;--------Ошибка 3 Неявное преобразование типа "int" в "labwork3.Vector" невозможно C:\Users\User\Desktop\Гетерогенные программные платформы\Лабораторная 3\labwork3\labwork3\Program.cs 117 19 labwork3
ob3.show();
Console.ReadLine();
Console.ReadKey(true);
}
}
}