Заданы координаты вершин трех треугольников.Определить сколько треугольников лежит внутри окружности - C#
Формулировка задачи:
Заданы координаты вершин трех треугольников. Определить сколько треугольников лежит внутри окружности радиусом R с центром в начале координат.-C#консоль. Ребят ошибка есть в том , что вычисляет только последнюю вершину и по ней присваивает значение 1 или 0, а нужно сделать в цикле, допустим for (int i = 0; i < 3; i++) A = Math.Sqrt((t1[i].x * t1[i].x) + (t1[i].y * t1[i].y)); if (A < r) a = 1; else a = 0; , так, чтобы "если хотя бы одна из вершин не входит в окружность , то а принимает значение 0 и , следовательно, треугольник не входит в окружность. Пытался вставить оператор break , но как бы я его не вставлял и так и сяк - не получается , пишет "оператор break не имеет связи с каким-либо внешним циклом". Прошу , помогите, буду преблагодарен.
namespace ConsoleApplication1
{
class Program
{
class cr
{
public double x, y;
};
static void Main(string[] args)
{
double l = 0;
double A = 0;
double B = 0;
double C = 0;
int a, b, c;
Console.WriteLine("Введите R:");
double r = Convert.ToDouble(Console.ReadLine());
{
cr[] t1 = new cr[3]; // треугольник 1
Console.WriteLine("Введите вершины 1го треугольника");
for (int i = 0; i < 3; i++)
{
Console.WriteLine("Введите X{0}:", i + 1);
t1[i].x = Double.Parse(Console.ReadLine());
Console.WriteLine("Введите Y{0}:", i + 1);
t1[i].y = Double.Parse(Console.ReadLine());
}
{
{
for (int i = 0; i < 3; i++)
A = Math.Sqrt((t1[i].x * t1[i].x) + (t1[i].y * t1[i].y));
if (A < r) a = 1; else a = 0;
}
}
{
cr[] t2 = new cr[3]; // треугольник 2
Console.WriteLine("Введите вершины 2го треугольника");
for (int i = 0; i < 3; i++)
{
Console.Write("Введите X{0}:", i + 1);
t2[i].x = Double.Parse(Console.ReadLine());
Console.Write("Введите Y{0}:", i + 1);
t2[i].y = Double.Parse(Console.ReadLine());
}
{
for (int i = 0; i < 3; i++)
B = Math.Sqrt((t2[i].x) * (t2[i].x) + (t2[i].y) * (t2[i].y));
if (B < r)
b = 1;
else b = 0;
}
}
{
cr[] t3 = new cr[3]; // треугольник 3
Console.WriteLine("Введите вершины 3го треугольника");
for (int i = 0; i < 3; i++)
{
Console.Write("Введите X{0}:", i + 1);
t3[i].x = Double.Parse(Console.ReadLine());
Console.Write("Введите Y{0}:", i + 1);
t3[i].y = Double.Parse(Console.ReadLine());
}
{
for (int i = 0; i < 3; i++)
C = Math.Sqrt((t3[i].x) * (t3[i].x) + (t3[i].y) * (t3[i].y));
if (C < r) c = 1;
else c = 0;
}
}
l = a + b + c;
Console.WriteLine("\n" + "кол-во треугольников, лежащих внутри окружности=" + "\t" + l + "\t");
}
}
}
}
Ошибка 1 Отсутствует внешний цикл для прерывания или продолжения. Вот такую ошибку пишет в случае с break
Решение задачи: «Заданы координаты вершин трех треугольников.Определить сколько треугольников лежит внутри окружности»
textual
Листинг программы
using System;
class Program
{
static void Main(string[] args)
{
Triangle[] triangles = new Triangle[3];
for(int i=0; i<3; i++)
{
Console.WriteLine("Введите координаты вершин " + (i+1) + "-го треугольника");
Point[] pts = new Point[3];
for (int j = 0; j < 3; j++)
{
Console.Write("Введите X{0}:", j+1);
int x = int.Parse(Console.ReadLine());
Console.Write("Введите Y{0}:", j+1);
int y = int.Parse(Console.ReadLine());
pts[j] = new Point(x, y);
}
triangles[i] = new Triangle(pts);
}
Console.WriteLine("Введите R:");
int r = int.Parse(Console.ReadLine());
int count = 0;
foreach (Triangle triangle in triangles)
if (triangle.CheckTriangle(r))
count++;
Console.WriteLine("Кол-во треугольников, лежащих внутри окружности = " + count);
}
}
class Point
{
public int X { set; get; }
public int Y { set; get; }
public Point(int x, int y)
{
X = x;
Y = y;
}
public bool CheckPoint(int r)
{
return Math.Sqrt(X * X + Y * Y) <= r * r;
}
}
class Triangle
{
public Point A { set; get; }
public Point B { set; get; }
public Point C { set; get; }
public Triangle(Point[] points)
{
A = points[0]; B = points[1]; C = points[2];
}
public bool CheckTriangle(int R)
{
return A.CheckPoint(R) && B.CheckPoint(R) && C.CheckPoint(R);
}
}