70分求助
查看原帖
70分求助
538427
czy0323楼主2022/8/22 13:27
#include<bits/stdc++.h>
using namespace std;
const double eps=1e-8;
double sum,all,Area[3];

int sgn(double x){
	if( fabs(x)<eps )
		return 0;
	return x>0?1:-1;
};

struct Point{
	double x,y;
	Point(){
		x=y=0;
	}
	bool operator ==(Point b){
		return (sgn(x-b.x)==0 && sgn(y-b.y)==0);
	}
	Point operator -(Point b){
		Point c;
		c.x=x-b.x,c.y=y-b.y;
		return c;
	}
} A[4];

double cross(Point a,Point b){
	return a.x*b.y-a.y*b.x;
}

double area(Point a,Point b,Point c){
	return cross(a-c,b-c)/2.0;
}

int main() {
	for(int i=0;i<4;i++)
		scanf("(%lf,%lf)\n",&A[i].x,&A[i].y);
	if( A[3]==A[0] || A[3]==A[1] || A[3]==A[2] ){
		cout<<4;
		return 0;
	}
	Area[0]=area(A[0],A[1],A[3]),Area[1]=area(A[0],A[2],A[3]),Area[2]=area(A[1],A[2],A[3]);
	if( !Area[0] || !Area[1] || !Area[2] ){
		cout<<3;
		return 0;
	}
	sum=area(A[0],A[1],A[2]);
	all=fabs(Area[0])+fabs(Area[1])+fabs(Area[2]);
	if( sgn(sum-all)==0 )
		cout<<1;
	else
		cout<<2;
	return 0;
}
2022/8/22 13:27
加载中...