ckdgus2482   4년 전

https://www.mathopenref.com/coordpolygonarea2.html (사다리꼴 분할(?) 방법)
이 게시글을 참고하여 풀어보려고 하는데 오답 이유를 모르겠습니다.

실수형 타입의 계산 오차를 우려하여 area는 10배 키워서 계산(1/2 대신 *5)하였고 도화지 크기가 400억이므로 중간값의 절대값은 2000억을 넘지 않을 것이므로 long long 타입에서 산술 오버플로는 발생하지 않을 것 같습니다.

bupjae   4년 전

17번째 줄의 출력 방법을 다시 생각해 보세요

ckdgus2482   4년 전

area 절대값으로 다시 저장한 후에 출력하도록 바꿨으나 그래도 오답이 나오네요

어딘가 다른 문제가 또 있나봅니다

bupjae   4년 전

프로그램을 수정하셨으면 전체 프로그램을 올려주세요

ckdgus2482   4년 전

원래 코드에서 17번 라인만 수정하였습니다

bupjae   4년 전

17번째 줄의 abs 가 받아들이는 인자가 long long int 가 아니라 int 입니다.

   

(C++가 아닌) C에서는 함수 오버로드를 지원하지 않으므로 같은 일을 하는 함수라도 인자 타입이 다르면 이름이 달랐습니다.

long long int 를 받아들이는 abs 함수는 llabs 입니다.

   

C++에서는 함수 오버로드를 지원하므로 std::abs 에 int 를 넣으면 int가 나오고, long long int 를 넣으면 long long int 가 나옵니다.

단, 함수 오버로드를 사용하기 위해서는 std:: 네임스페이스 안에 있는 abs 를 사용해야 합니다.
   

ckdgus2482   4년 전

감사합니다 std:: 붙여서 해결했습니다.

vs에서는 cmath에 정의된 abs를 쓰면 c++스타일로 재정의된 함수가 호출되어서 표준 레퍼런스가 그런줄 알았습니다.

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