Из заданного на плоскости множества точек выбрать три различные точки - 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();
}
}
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5
Похожие ответы