코딩테스트

[C++] 다각형 면적

뇨롱 2021. 6. 27. 00:40

숙제 2 (다각형 면적)

이차원 평면에서 n개의 점이 주어졌을, 점들을 연속적으로 연결한 단순다각형의 면적2배를 계산하, 점들이 시계방향으로 나열되었는지 혹은 반시계방향으로 나열되었는지를 판별하는 로그램을 작성하시오

#include<iostream>
#include<string.h>
#include<cmath>
using namespace std;


int main(){
	int n=0x00;
	cin>>n;
	int width=0x00;
	int **arr=new int*[n+1];
	
	for(int i=0;i<n+1;i++){
		arr[i]=new int[2];
		memset(arr[i],0,sizeof(int)*2);
	}
	for(int i=0;i<n;i++){
		cin>>arr[i][0]>>arr[i][1];
	}
	arr[n][0]=arr[0][0];
	arr[n][1]=arr[0][1];

	for(int i=0;i<n;i++) width+=(arr[i][0]*arr[i+1][1]-arr[i][1]*arr[i+1][0]);
	cout<<abs(width);
	if( width<0) printf(" -1");
	else printf(" 1");

	cout<<endl;
	return 0;
}