Из заданного на плоскости множества точек выбрать три различные точки - C#
Формулировка задачи:
привет всем) помогите исправить код задачи.
задача: Из заданного на плоскости множества точек выбрать три различные точки так, чтобы разность между площадью круга, ограниченного окружностью, проходящей через эти три точки, и площадью треугольника с вершинами в этих точках была минимальной.
выводит всегда ноль.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { double[] X1 = new double[1000]; double[] Y1 = new double[1000]; double[] X2 = new double[1000]; double[] Y2 = new double[1000]; double[] X3 = new double[1000]; double[] Y3 = new double[1000]; double[] E = new double[1000]; int i, n, m, k, d,z; int l = 0; Console.Write("Введите n: "); n = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите m: "); m = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите k: "); k = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Kоординаты точек:"); Random rand1 = new Random(n); for (i = 0; i < n; i++) { X1[i] = rand1.Next(0, 10); Console.Write(X1[i] + " "); } Console.WriteLine(' '); for (i = 0; i < n; i++) { Y1[i] = rand1.Next(0, 10); Console.Write(Y1[i] + " "); } Console.WriteLine(' '); for (i = 0; i < m; i++) { X2[i] = rand1.Next(0, 10); Console.Write(X2[i] + " "); } Console.WriteLine(' '); for (i = 0; i < m; i++) { Y2[i] = rand1.Next(0, 10); Console.Write(Y2[i] + " "); } Console.WriteLine(' '); for (i = 0; i < k; i++) { X3[i] = rand1.Next(0, 10); Console.Write(X2[i] + " "); } Console.WriteLine(' '); for (i = 0; i < k; i++) { Y3[i] = rand1.Next(0, 10); Console.Write(Y2[i] + " "); } Console.WriteLine(' '); double P; // Полупериметр double A, B, C; ; // Длины сторон треугольника double STreug; // Площадь треугольника double SKrug;// Площадь описанного круга A = Math.Sqrt((X2[i] - X1[i]) * (X2[i] - X1[i]) + (Y2[i] - Y1[i]) * (Y2[i] - Y1[i])); B = Math.Sqrt((X3[i] - X2[i]) * (X2[i] - X2[i]) + (Y3[i] - Y2[i]) * (Y3[i] - Y2[i])); C = Math.Sqrt((X3[i] - X1[i]) * (X3[i] - X1[i]) + (Y3[i] - Y1[i]) * (Y3[i] - Y1[i])); P = (A + B + C) / 2; // Площадь треугольника по формуле Герона STreug = Math.Sqrt(P * (P - A) * (P - B) * (P - C)); // Площадь круга описанного возле треугольника Pi * (R^2) SKrug = (3.14 * (A * B * C / (STreug * 4)) * (A * B * C / (STreug * 4))); for (i = 1; i < n; i++) { for (d = 1; d < n - 1; d++) { for (z = 1; z < n - 2; z++) { if ((X1[i] != X1[d]) && (X1[d] != X1[z]) && (Y1[i] != Y1[d]) && (Y1[d] != Y1[z])) { // Разность площадей double Result = SKrug - STreug; E[l] = Result; l = l + 1; double Min = E[1]; for (i = 1; i < l; i++) { if (E[l] < Min) Min = E[i]; } Console.WriteLine(Min); } } } } Console.ReadLine(); } } }
Решение задачи: «Из заданного на плоскости множества точек выбрать три различные точки»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { double[] X1 = new double[1000]; double[] Y1 = new double[1000]; double[] X2 = new double[1000]; double[] Y2 = new double[1000]; double[] X3 = new double[1000]; double[] Y3 = new double[1000]; double[] E = new double[1000]; int i, n, m, k, d,z; int l = 0; Console.Write("Введите n: "); n = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите m: "); m = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите k: "); k = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Kоординаты точек:"); Random rand1 = new Random(n); for (i = 0; i < n; i++) { X1[i] = rand1.Next(0, 10); Console.Write(X1[i] + " "); } Console.WriteLine(' '); for (i = 0; i < n; i++) { Y1[i] = rand1.Next(0, 10); Console.Write(Y1[i] + " "); } Console.WriteLine(' '); for (i = 0; i < m; i++) { X2[i] = rand1.Next(0, 10); Console.Write(X2[i] + " "); } Console.WriteLine(' '); for (i = 0; i < m; i++) { Y2[i] = rand1.Next(0, 10); Console.Write(Y2[i] + " "); } Console.WriteLine(' '); for (i = 0; i < k; i++) { X3[i] = rand1.Next(0, 10); Console.Write(X2[i] + " "); } Console.WriteLine(' '); for (i = 0; i < k; i++) { Y3[i] = rand1.Next(0, 10); Console.Write(Y2[i] + " "); } Console.WriteLine(' '); double P; // Полупериметр double A, B, C; ; // Длины сторон треугольника double STreug; // Площадь треугольника double SKrug;// Площадь описанного круга A = Math.Sqrt((X2[i] - X1[i]) * (X2[i] - X1[i]) + (Y2[i] - Y1[i]) * (Y2[i] - Y1[i])); B = Math.Sqrt((X3[i] - X2[i]) * (X2[i] - X2[i]) + (Y3[i] - Y2[i]) * (Y3[i] - Y2[i])); C = Math.Sqrt((X3[i] - X1[i]) * (X3[i] - X1[i]) + (Y3[i] - Y1[i]) * (Y3[i] - Y1[i])); P = (A + B + C) / 2; // Площадь треугольника по формуле Герона STreug = Math.Sqrt(P * (P - A) * (P - B) * (P - C)); // Площадь круга описанного возле треугольника Pi * (R^2) SKrug = (3.14 * (A * B * C / (STreug * 4)) * (A * B * C / (STreug * 4))); for (i = 1; i < n; i++) { for (d = 1; d < n - 1; d++) { for (z = 1; z < n - 2; z++) { if ((X1[i] != X1[d]) && (X1[d] != X1[z]) && (Y1[i] != Y1[d]) && (Y1[d] != Y1[z])) { // Разность площадей double Result = SKrug - STreug; E[l] = Result; l = l + 1; double Min = E[1]; for (i = 1; i < l; i++) { if (E[l] < Min) Min = E[i]; } Console.WriteLine(Min); } } } } Console.ReadLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д