Определить пару точек,которые наиболее близки друг к другу - C#
Формулировка задачи:
1)Задано 10 точек , определить пару точек,которые наиболее близки друг к другу
2)Для 10 точек определить ,находятся они на окружности или хотя бы в кольце
есть некоторые наработки,но дальше дело не пошло
namespace KlassPoint
{
class Point
{
double x, y;
public Point(double x, double y)
{
this.x = x;
this.y = y;
}
public void Move(double dx, double dy)
{
x = x + dx;
y = y + dy;
}
public double Distance()
{
return Math.Sqrt(x * x + y * y);
}
public double Distance(Point p)
{
return Math.Sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
}
public static double Distance(Point d, Point f)
{
return Math.Sqrt((d.x - f.x) * (d.x - f.x) + (d.y - f.y) * (d.y - f.y));
}
}
class Program
{
static void Main(string[] args)
{
Point A = new Point(0, 0);
Point B = new Point(0, 4);
Point C = new Point(5, 0);
Point min;
if (A.Distance() < B.Distance() && A.Distance() < C.Distance())
min = A;
if (B.Distance() < A.Distance() && B.Distance() < C.Distance())
min = B;
if (C.Distance() < A.Distance() && C.Distance() < B.Distance())
min = C;
Point.Distance(A,B);
}
}
}Решение задачи: «Определить пару точек,которые наиболее близки друг к другу»
textual
Листинг программы
int minP1 = 0, minP2 = 1; { в качестве минимального первоначально
берём расстояние от 1-й до 2-й точки (т.е. индексы 0 и 1}
double MinDistance = Distance( P[0], P[1] );
for(int i=0; i<N-2; i++)
{
for(int j=i+1; j<N-1; j++)
{
if(Distance( i, j) < MinDistance)
{
MinDistance = Distance( i, j);
minP1 = i; minP2 = j;
}
}
}
Console.WriteLine('Минимальное расстояние {0} между точками {1} и {2}', MinDistance, minP1, minP2 );