Здравствуйте.
Помогите, пожалуйста, найти ошибки в программе.
Условие:
На вход подаётся шесть точек. Нужно вычислить расположение треугольника и вывести координаты его вершин исходя из условий:
1) вершинами треугольника должны быть три точки из полученных на вход,
2) треугольник должен располагаться так, чтобы внутри него оказалось как можно больше точек из оставшихся (не попавших в вершины).
Ответом должны быть три точки - вершины полученного треугольника.
Для написания программы использовать язык С++.
Программа написана, но работает некорректно: она выдает 3 точки, 2 из которых одинаковые, чаще всего это точки с индексами 3 и 4 из исходного массива. Т.е. вместо треугольника получается отрезок.
Алгоритм такой:
На точках строим всевозможные треугольники. Проверяем для них условия, запоминаем результаты. Затем сравниваем в каком случае условие было выполнено наилучшим образом, т.е когда внутри оказалось больше всего точек и выводим координаты вершин, удовлетворяющие этому условию.
#include <stdafx.h>
#define N 6
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
int main()
{
        //ввод точек
        int R[N][2];
        int i,j,k;
        
        cout<<"VVedite tochki\n";
        for(i=0;i<N;i++)
        {
                cout<<"x"<<"["<<i<<"]=";
                cin>>R[i][0];
                //cout<<"x"<<"["<<i<<"]="<<R[i][0]<<"\n";
                cout<<"y"<<"["<<i<<"]=";
                cin>>R[i][1];
                //cout<<"x"<<"["<<i<<"]="<<R[i][1]<<"\n";
                cout<<"\n";
        }
        for(j=0;j<N;j++)
        {
                cout<<"x"<<"["<<j<<"]="<<R[j][0]<<"\n";
                cout<<"y"<<"["<<j<<"]="<<R[j][1]<<"\n";
                cout<<"\n";
        }
        double a,b,c,p,S,S1,S2,S3,S4;
        double t,t1,t2,h1,p1,rad,g1;
        double a1,b1,c1,p2,p3;
        int F[3][2]; //для фиксации точек
        int n,m,n1,m1;//n-внешние точки m-внутренние точки
        h1=1;
        //n1=0;
        //m1=-1;
        
        int l,fuct,g;
        int e=5;
        fuct=0;
        for(i=0;i<3;i++)
        {
                F[i][0]=0;
                F[i][1]=0;
        }
        S4=0;
        for(i=0;i<N-1;i++)
        {
                //cout<<"x"<<"["<<i<<"]="<<R[i][0]<<"\n";
                //cout<<"y"<<"["<<i<<"]="<<R[i][1]<<"\n";
                for(j=0;j<N-1;j++)
                {
                        fuct=1;
                        g1=0;
                        if(j!=i)
                        {
                                for(l=0;l<N-1;l++)
                                {
                                        //if (fuct=1)
                                        //{
                                        if(j!=l || F[i][0]!=F[j][0] && F[l][0]!=F[i][0] || F[i][1]!=F[j][1] && F[l][1]!=F[i][1] )
                                        {
                                                if (fuct=1)
                                        {
                                                //длина стороны 1
                                                        t1=abs(R[i][0]-R[j][0]);
                                                        t2=abs(R[i][1]-R[j][1]);
                                                        t=t1*t1+t2*t2;
                                                        //a=sqrt(t);
                                                        a=pow(t,0.5);
                                                //длина стороны 2
                                                        t1=abs(R[i][0]-R[l][0]);
                                                        t2=abs(R[i][1]-R[l][1]);
                                                        t=t1*t1+t2*t2;
                                                        //b=sqrt(t);
                                                        b=pow(t,0.5);
                                                //длина стороны 3
                                                        t1=abs(R[l][0]-R[j][0]);
                                                        t2=abs(R[l][1]-R[j][1]);
                                                        t=t1*t1+t2*t2;
                                                        //c=sqrt(t);
                                                        c=pow(t,0.5);
                                                //подсчет полупериметра и площади
                                                        p=(a+b+c)/2;
                                                        //S=sqrt(p*(p-a)*(p-b)*(p-c));
                                                        rad=sqrt((p-a)*(p-b)*(p-c)/p);
                                                        fuct=fuct+1;
                                                        g=l;
                                                }//закрывает иф внутри цикла по Л
                                                
                                        }
                                        if (fuct=2 && g!=l)
                                                {
                                                        S4++;
                                                        t1=abs(R[i][0]-R[g][0]);
                                                        t2=abs(R[i][1]-R[g][1]);
                                                        t=t1*t1+t2*t2;
                                                        if (t<=rad){g1=g1+1;}
                                                        t1=abs(R[j][0]-R[g][0]);
                                                        t2=abs(R[j][1]-R[g][1]);
                                                        t=t1*t1+t2*t2;
                                                        if (t<=rad){g1=g1+1;}
                                                        t1=abs(R[l][0]-R[g][0]);
                                                        t2=abs(R[l][1]-R[g][1]);
                                                        t=t1*t1+t2*t2;
                                                        if (t<=rad){g1=g1+1;}
                                                        if (g1=3){m1=m1+1;}
                                                        else {n1=n1+1;}
                                                        g1=0;
                                                }
                                }//закрытие цикла по Л
                                if (m1>n1 )//&& m1-n1>e)
                                {
                                        F[0][0]=R[i][0];
                                        F[0][1]=R[i][1];
                                        
                                        F[1][0]=R[j][0];
                                        F[1][1]=R[j][1];
                                        F[2][0]=R[g][0];
                                        F[2][1]=R[g][1];
                                        
                                        m=m1;
                                        n=n1;
                                        //e=m-n;
                                }
                                
                        }//закр условие внутри цикла по джи
                }//закрытие цикла по джи
        }//закрытие цикла по и
        cout<<"answer:\n";
        for(i=0;i<3;i++)
        {
                cout<<"x"<<"["<<i<<"]="<<F[i][0]<<"\n";
                cout<<"y"<<"["<<i<<"]="<<F[i][1]<<"\n";
                cout<<"\n";
        }
        //cout<<"S4="<<S4<<"\n";
    system("pause");
        return 0;
}