Заданы координаты вершин трех треугольников.Определить сколько треугольников лежит внутри окружности - 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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д