과제를 위해 쓰고있는 프로그램의 일부로 두 숫자를 비교해야합니다. 본질적으로이 프로그램은 두 축이 주어진 타원의 이심률을 계산하고 계산 된 편심 값을 지구의 달의 궤도와 태양 주위의 지구 궤도의 (기 설정된) 이심률과 비교해야합니다. 계산 된 편심 값이 주어진 편심 값보다 큰 경우이 값은 1
값으로 나타내야하며, 그렇지 않으면 0
값으로 표시되어야합니다. 이러한 모든 값은 부동 소수점, 특히 long double
입니다.비교 연산자가없는 두 숫자 비교
할당의 제약 조건으로 인해 비교 연산자 (>
과 같은) 나 모든 종류의 논리 (!x
또는 if-else
)를 사용할 수 없습니다. 그러나 math.h
라이브러리의 pow
및 sqrt
함수를 사용할 수 있습니다. 또한 모듈러스 연산뿐만 아니라 산술 연산도 사용할 수 있습니다.
내가 분모가 분자보다 큰 경우 나 소수점을 절단하는 정수 나눗셈을 활용할 수 있다는 사실을 알고
, 즉 :MOON_ORBIT_ECCENTRICITY
이 큰
0
경우
int x = eccentricity/MOON_ORBIT_ECCENTRICITY;
는 것입니다 ... eccentricity
보다. 그러나이 관계가 반전되면 x
의 값은 0이 아닌 정수가 될 수 있습니다. 이 경우 원하는 결과는 1
입니다.
첫 번째 가장 직관적 인 (그리고 순진) 솔루션
했다 :int y = (x/x);
이 제로가 아닌 1
x
경우 반환합니다. 그러나 x
이 0
이면 0으로 나눈 값으로 인해 프로그램이 중단됩니다. 사실, 나는 0으로 나누는 문제에 부딪치고있다. 누구든지이 문제를 해결하는 방법에 대한 아이디어가 있습니까
int y = (x + 1) % x;
: 이것은 또한의 경우에는 어떻게됩니까? 이 은처럼 그렇게 좌절감이 있습니다.
천장 및 바닥 기능을 확인 했습니까? –
'if '와 같은 제어문을 사용할 수 없다면 어떻게 비교 결과를 사용할 것인가? – harper
비트 연산을 사용할 수 있습니까? –