Определить, сколько точек множества попадает в круг с центром в первой точке - C#
Формулировка задачи:
Дано множество точек на плоскости. Сколько точек данного множества попадает в круг с центром в первой точке и радиусом равным расстоянию между двумя последними точками
Решение задачи: «Определить, сколько точек множества попадает в круг с центром в первой точке»
textual
Листинг программы
using System;
namespace cyb20 {
class Vector {
//Свойства
public double X { get; set; }
public double Y { get; set; }
//Методы
public static Vector operator -(Vector u, Vector w) {
return new Vector() {
X=u.X-w.X,
Y=u.Y-w.Y
};
}
public double mod() {
return Math.Sqrt(X*X+Y*Y);
}
public override string ToString() {
return string.Format("({0},{1})",X,Y);
}
}
class Program {
static void Main() {
//Делаем массив векторов, указывающих на точки
Vector[] m= {
new Vector(){ X=1, Y=2 },
new Vector(){ X=4, Y=3 },
new Vector(){ X=5, Y=6 },
new Vector(){ X=7, Y=-6 },
new Vector(){ X=8, Y=7 },
new Vector(){ X=9, Y=10 },
};
//Этот вектор указывает на центр круга
Vector c=m[0];
//Определим радиус круга
int l=m.Length;
double r=(m[l-1]-m[l-2]).mod();
//Пройдемся по массиву, опеределяя лежит точка в круге или нет
int cnt=0;
for (int i=0; i<l; i++)
if ((m[i]-c).mod()<=r)
cnt++;
Console.WriteLine("Внутри круга лежит {0} точек, с учетом центра",cnt);
Console.ReadLine();
}
}
}