Загрузка данных
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _1
{
// класс DemoPoint реализует стандартный интерфейс IComparable
class DemoPoint : IComparable
{
protected int x;
protected int y;
public DemoPoint(int x, int y)
{
this.x = x; this.y = y;
}
public void Show()
{
Console.WriteLine("точка на плоскости: ({0}, {1})", x, y);
}
public double Dlina()
{
return Math.Sqrt(x * x + y * y);
}
//реализация метода CompareTo
public int CompareTo(object obj)
{
DemoPoint b = (DemoPoint)obj; //преобразуем к типу DemoPoint
//определяем критерии сравнения текущего объекта с параметром в
// зависимости от удаленности точки от начала координат
if (this.Dlina() == b.Dlina()) return 0;
else if (this.Dlina() > b.Dlina()) return -1;
else return 1;
}
}
class Program
{
static void Main()
{
//создаем массив ссылок
DemoPoint[] a = new DemoPoint[4];
a[0] = new DemoPoint(5, -1);
a[1] = new DemoPoint(-3, 3);
a[2] = new DemoPoint(3, 4);
a[3] = new DemoPoint(0, 1);
//сортируем массив точек, при этом в качестве критерия сортировки будет
//использоваться собственная реализация метода CompareTo
Array.Sort(a);
Console.WriteLine();
foreach (DemoPoint x in a)
{
x.Show();
Console.WriteLine("Dlina={0:f2} ", x.Dlina());
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _2
{
class DemoPoint : IComparable
{
protected int x;
protected int y;
public DemoPoint(int x, int y)
{
this.x = x; this.y = y;
}
public void Show()
{
Console.WriteLine("точка на плоскости: ({0}, {1})", x, y);
}
public double Dlina()
{
return Math.Sqrt(x * x + y * y);
}
public int CompareTo(object obj)
{
DemoPoint b = (DemoPoint)obj;
if (this.Dlina() == b.Dlina()) return 0;
else if (this.Dlina() > b.Dlina()) return 1;
else return -1;
}
public static bool operator ==(DemoPoint a, DemoPoint b)
{
return (a.CompareTo(b) == 0);
}
public static bool operator !=(DemoPoint a, DemoPoint b)
{
return (a.CompareTo(b) != 0);
}
public static bool operator > (DemoPoint a, DemoPoint b)
{
return (a.CompareTo(b) > 0);
}
public static bool operator <(DemoPoint a, DemoPoint b)
{
return (a.CompareTo(b) < 0);
}
public static bool operator >=(DemoPoint a, DemoPoint b)
{
return (a.CompareTo(b) >= 0);
}
public static bool operator <=(DemoPoint a, DemoPoint b)
{
return (a.CompareTo(b) <= 0);
}
}
class Program
{
static void Main()
{
DemoPoint a = new DemoPoint(-7, 0);
DemoPoint b = new DemoPoint(0, 3);
if (a == b) Console.WriteLine("равно удалены от начала координат");
else Console.WriteLine("не равно удалены от начала координат");
DemoPoint a2 = new DemoPoint(22, 0);
DemoPoint b2 = new DemoPoint(0, 3);
if (a2 > b2) Console.WriteLine("первая дальше");
else if (a2 < b2) Console.WriteLine("вторая дальше");
else Console.WriteLine("равно удалены от начала координат");
DemoPoint a3 = new DemoPoint(-7, 0);
DemoPoint b3 = new DemoPoint(0, 3);
if (a3 >= b3) Console.WriteLine("первая дальше или равноудалена");
else Console.WriteLine("вторая дальше");
}
}
}