kyaryunha   1년 전

실수(float,double)과 계산기하 초보입니다... ((는 그냥 c언어 초보 같기도 하지만....))

일단 문제가 영어이므로 간단하게 요약을 하자면,

점들이 주어지고, 이 점들을 대상으로 볼록껍질을 구한후, 다각형의 넓이를 구하는 문제입니다..!

일단 가운데에 printf넣어서 확인해본 결과 볼록껍질 부분은  문제 없이 돌아가고요. 

그런데 다각형의 넓이를 구하는 부분이.. 왜틀렸는지도 모르는체 예제조차 제대로 안나옵니다. 

가운데 체크용 printf 넣은 부분.. 확실히 잘못돌아가는건 알겠는데.. 왜 그런지를 모르겠습니다.

분명.. 2166번 그냥 다각형의 면적 구하는 문제에 제출해서 AC난 아래 코드와 그리 뭐가 크게 다르지 않아서 대체 왜 이번꺼는 예제조차 안나는지 궁금합니다..

https://www.acmicpc.net/source...

bupjae   1년 전

두 가지의 실수가 있습니다.

1) floor(double) 의 반환값은 double 입니다. %d 를 쓰면 안되고 %.0lf 를 써야 합니다.

2) 다각형 넓이를 구하는 공식을 쓸 때는 좌표 정렬을 하면 안 됩니다. 다각형의 꼭지점 순서대로 (시계방향이든 시계반대방향이든) 공식을 써야 합니다.

convex hall 알고리즘의 결과는 다각형 꼭지점 순서를 지키므로 32번째줄을 지우고 50번째 줄의 출력 형식자를 바꾸면 원하는 결과가 나올 겁니다.

kyaryunha   1년 전

알려주셔서 감사합니다..!! 덕분에 해결했습니다..!! :) 

헉ㄱ floor 뭔가 내림이라서 당연히 %d일거라 생각했는데 아니었군요..!

댓글을 작성하려면 로그인해야 합니다.