// ConsoleApplication8.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
//структура "Точка"
struct Point
{
double x,y;
};
//структура "Квадрат"
struct Square
{
Point p1,p2,p3,p4;
};
int fact(int N)
{
if(N < 0) // если пользователь ввел отрицательное число
return 0; // возвращаем ноль
if (N == 0) // если пользователь ввел ноль,
return 1; // возвращаем факториал от нуля
else // Во всех остальных случаях
return N * fact(N - 1); // делаем рекурсию.
}
int chek(Square squares)
{
if ((((squares.p2.x-squares.p1.x)*(squares.p2.x-squares.p1.x)+(squares.p2.y-squares.p1.y)*(squares.p2.y-squares.p1.y))==((squares.p3.x-squares.p2.x)*(squares.p3.x-squares.p2.x)+(squares.p3.y-squares.p2.y)*(squares.p3.y-squares.p2.y))==((squares.p4.x-squares.p3.x)*(squares.p4.x-squares.p3.x)+(squares.p4.y-squares.p3.y)*(squares.p4.y-squares.p3.y))==((squares.p1.x-squares.p4.x)*(squares.p1.x-squares.p4.x)+(squares.p1.y-squares.p4.y)*(squares.p1.y-squares.p4.y))))//||(((squares.p4.x-squares.p1.x)*(squares.p4.x-squares.p1.x)+(squares.p4.y-squares.p1.y)*(squares.p4.y-squares.p1.y))==((squares.p2.x-squares.p4.x)*(squares.p2.x-squares.p4.x)+(squares.p2.y-squares.p4.y)*(squares.p2.y-squares.p4.y))==((squares.p3.x-squares.p2.x)*(squares.p3.x-squares.p2.x)+(squares.p3.y-squares.p2.y)*(squares.p3.y-squares.p2.y))==((squares.p1.x-squares.p3.x)*(squares.p1.x-squares.p3.x)+(squares.p1.y-squares.p3.y)*(squares.p1.y-squares.p3.y)))||(((squares.p1.x-squares.p3.x)*(squares.p1.x-squares.p3.x)+(squares.p1.y-squares.p3.y)*(squares.p1.y-squares.p3.y))==((squares.p3.x-squares.p2.x)*(squares.p3.x-squares.p2.x)+(squares.p3.y-squares.p2.y)*(squares.p3.y-squares.p2.y))==((squares.p4.x-squares.p2.x)*(squares.p4.x-squares.p2.x)+(squares.p4.y-squares.p2.y)*(squares.p4.y-squares.p2.y)))||(((squares.p3.x-squares.p4.x)*(squares.p3.x-squares.p4.x)+(squares.p3.y-squares.p4.y)*(squares.p3.y-squares.p4.y))==((squares.p4.x-squares.p1.x)*(squares.p4.x-squares.p1.x)+(squares.p4.y-squares.p1.y)*(squares.p4.y-squares.p1.y))==((squares.p2.x-squares.p1.x)*(squares.p2.x-squares.p1.x)+(squares.p2.y-squares.p1.y)*(squares.p2.y-squares.p1.y))==((squares.p3.x-squares.p2.x)*(squares.p3.x-squares.p2.x)+(squares.p3.y-squares.p2.y)*(squares.p3.y-squares.p2.y))))
{/*if ((((((squares.p1.x-squares.p2.x)*(squares.p1.x-squares.p2.x)+(squares.p1.y-squares.p2.y)*(squares.p1.y-squares.p2.y)))*(((squares.p1.x-squares.p2.x)*(squares.p1.x-squares.p2.x)+(squares.p1.y-squares.p2.y)*(squares.p1.y-squares.p2.y)))+(((squares.p3.x-squares.p2.x)*(squares.p3.x-squares.p2.x)+(squares.p3.y-squares.p2.y)*(squares.p3.y-squares.p2.y)))*(((squares.p3.x-squares.p2.x)*(squares.p3.x-squares.p2.x)+(squares.p3.y-squares.p2.y)*(squares.p3.y-squares.p2.y))))==((((squares.p1.x-squares.p4.x)*(squares.p1.x-squares.p4.x)+(squares.p1.y-squares.p4.y)*(squares.p1.y-squares.p4.y)))*(((squares.p1.x-squares.p4.x)*(squares.p1.x-squares.p4.x)+(squares.p1.y-squares.p4.y)*(squares.p1.y-squares.p4.y)))+(((squares.p3.x-squares.p4.x)*(squares.p3.x-squares.p4.x)+(squares.p3.y-squares.p4.y)*(squares.p3.y-squares.p4.y)))*(((squares.p3.x-squares.p4.x)*(squares.p3.x-squares.p4.x)+(squares.p3.y-squares.p4.y)*(squares.p3.y-squares.p4.y)))))||(((((squares.p1.x-squares.p3.x)*(squares.p1.x-squares.p3.x)+(squares.p1.y-squares.p3.y)*(squares.p1.y-squares.p3.y)))*(((squares.p1.x-squares.p3.x)*(squares.p1.x-squares.p3.x)+(squares.p1.y-squares.p3.y)*(squares.p1.y-squares.p3.y)))+(((squares.p3.x-squares.p2.x)*(squares.p3.x-squares.p2.x)+(squares.p3.y-squares.p2.y)*(squares.p3.y-squares.p2.y))*((squares.p3.x-squares.p2.x)*(squares.p3.x-squares.p2.x)+(squares.p3.y-squares.p2.y)*(squares.p3.y-squares.p2.y))))==((((squares.p1.x-squares.p4.x)*(squares.p1.x-squares.p4.x)+(squares.p1.y-squares.p4.y)*(squares.p1.y-squares.p4.y))*((squares.p1.x-squares.p4.x)*(squares.p1.x-squares.p4.x)+(squares.p1.y-squares.p4.y)*(squares.p1.y-squares.p4.y)))+(((squares.p2.x-squares.p4.x)*(squares.p2.x-squares.p4.x)+(squares.p2.y-squares.p4.y)*(squares.p2.y-squares.p4.y))*((squares.p2.x-squares.p4.x)*(squares.p2.x-squares.p4.x)+(squares.p2.y-squares.p4.y)*(squares.p2.y-squares.p4.y))))))
{if((squares.p1.x==squares.p2.x==squares.p3.x)||(squares.p1.x==squares.p2.x==squares.p4.x)||(squares.p3.x==squares.p2.x==squares.p4.x)||(squares.p3.x==squares.p1.x==squares.p4.x))
{return false;}}
else {*/return true;}/*}*/
else {return false;}
}
int _tmain(int argc, _TCHAR* argv[])
{
//ввод множества точек
cout<<"Please, enter N:\n";
int np;
cin>>np;
Point *pp=new Point[np];
cout<<"Please, enter N points:\n";
for(int i=0;i<np;i++)
cin>>pp[i].x>>pp[i].y;
//int b =0;
/*for(int i=0;i<np;i++)
cout<<pp[i].x<<" "<<pp[i].y<<endl;*/
//b = ((fact(np))/(fact(4)*(fact(np-4))));
//cout<<b<<endl;
Square *squares = new Square[np];
int temp = -1;
for (int i =0;i<np-3;i++){
for( int j=i+1;j<np-2;j++){
for ( int k=j+1;k<np-1;k++){
for ( int l = k+1;l<np;l++){
// if ((i!=j)&&(i!=k)&&(i!=l)&&(j!=k)&&(j!=l)&&(k!=l)){
temp++;
squares[temp].p1=pp[i];
squares[temp].p2=pp[j];
squares[temp].p3=pp[k];
squares[temp].p4=pp[l];
}}}}
cout<<"test ";
temp++;
cout<<temp<<endl;
for (int i=0;i<temp;i++)
{
if (chek(squares[i])) {cout<<squares[i].p1.x<<" "<<squares[i].p1.y<<" "<<squares[i].p2.x<<" "<<squares[i].p2.y<<" "<<squares[i].p3.x<<" "<<squares[i].p3.y<<" "<<squares[i].p4.x<<" "<<squares[i].p4.y<<endl;}
//else {cout<<chek(squares[1]);}
}
cout<<"all points"<<endl;
for (int i =0;i<np;i++){
cout<<squares[i].p1.x<<" "<<squares[i].p1.y<<" "<<squares[i].p2.x<<" "<<squares[i].p2.y<<" "<<squares[i].p3.x<<" "<<squares[i].p3.y<<" "<<squares[i].p4.x<<" "<<squares[i].p4.y<<endl;}
/*for (int i =0;i<np;i++){
cout<<squares[i].p1.x<<" "<<squares[i].p1.y<<" "<<squares[i].p2.x<<" "<<squares[i].p2.y<<" "<<squares[i].p3.x<<" "<<squares[i].p3.y<<" "<<squares[i].p4.x<<" "<<squares[i].p4.y<<endl;}
сделать функцию проверки на квадрат ну и точки посчитать(пока хз как)*/
return 0;
}