Обращение к переменной объекта в списке - C#
Формулировка задачи:
Добрый день. Помогите разобраться с задачей:
Пользователь вводит некое n ( >= 2), которое задаст количество окружностей на плоскости. Далее программа просит ввести данные о местоположении окружностей на плоскости и их радиусы (3 числа для каждой окружности: координаты x и y, и радиус)
Необходимо из всех окружностей найти две, у которых расстояние между их центрами минимально относительно всех возможных пар окружностей. В качестве ответа вывести 2 строки в формате:
S1={0}; X1={1}, Y1={2}
S2={0}; X2={1}, Y2={2}
где S1 и S2 площади полученных окружностей, а X1, Y1 и X2, Y2 - их координаты.
Начал писать, но не понимаю как обращаться к Х и Y в списке. Т.е. список заполнен объектами, теперь мне нужно по формуле D = √(х2-х1)2+(y2-y1)2 найти две окружности с наименьшим расстоянием друг от друга и вывести ответ в нужном формате. Заранее спасибо за помощь
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _1.Окружности
{
public class Circle
{
public int x;
public int y;
public int r;
public Circle(int x, int y, int r)
{
this.x = x;
this.y = y;
this.r = r;
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите желаемое количиство окружностей (n >= 2):");
string quantityCircle = Console.ReadLine();
int n = int.Parse(quantityCircle);
if (n < 2)
{
return;
}
List<Circle> circle = new List<Circle>();
for (int i = 0; i < n; i++)
{
Console.WriteLine("Введите координату Х:");
string coordinateX = Console.ReadLine();
int x = int.Parse(coordinateX);
Console.WriteLine("Введите координату Y:");
string coordinateY = Console.ReadLine();
int y = int.Parse(coordinateY);
Console.WriteLine("Введите радиус окружности:");
string radiusR = Console.ReadLine();
int r = int.Parse(radiusR);
circle.Add(new Circle(x, y, r));
}
Console.ReadKey();
}
}
}Решение задачи: «Обращение к переменной объекта в списке»
textual
Листинг программы
public double DistanceTo(Circle circle)
{
return Math.Sqrt(Math.Pow(this.x - circle.x, 2) + Math.Pow(this.y - circle.y, 2));
}
public double Square
{
get { return Math.PI * r * r; }
}