이 튜토리얼에서는 분수 a/b의 분자와 분모에 더했을 때 다른 분수 c/d가 되도록 만드는 값 ΔX를 계산하는 C++ 프로그램을 작성해 보겠습니다. 즉, 다음 방정식을 만족하는 ΔX를 찾는 것이 목표입니다.
(a + ΔX) / (b + ΔX) = c / d
수학적 접근 방법
이 문제는 약간의 대수적 유도만 있으면 아주 간단하게 해결할 수 있습니다. 방정식 양변에 교차 곱셈(cross multiplication)을 적용한 뒤, ΔX 항들을 한쪽으로 모아 정리하면 됩니다.
d × (a + ΔX) = c × (b + ΔX)
ad + d·ΔX = bc + c·ΔX
ΔX(d − c) = bc − ad
따라서 최종 공식은 다음과 같습니다.
ΔX = (b·c − a·d) / (d − c)
a, b, c, d 네 값이 주어지면 위 공식에 대입하는 것만으로 ΔX를 손쉽게 구할 수 있습니다.
C++ 구현 예제
위에서 유도한 공식을 그대로 코드로 옮기면 다음과 같습니다.
#include <bits/stdc++.h>
using namespace std;
int findTheXValue(int a, int b, int c, int d) {
return (b * c - a * d) / (d - c);
}
int main() {
int a = 5, b = 2, c = 8, d = 7;
cout << findTheXValue(a, b, c, d) << endl;
return 0;
}
실행 결과
위 코드를 컴파일하여 실행하면 다음과 같은 결과가 출력됩니다.
19
예제에서 a=5, b=2, c=8, d=7이므로, ΔX = (2×8 − 5×7) / (7−8) = (16−35) / (−1) = 19가 됩니다. 실제로 분수 5/2의 분자와 분모에 각각 19를 더하면 24/21이 되고, 이를 약분하면 8/7이므로 결과가 올바름을 확인할 수 있습니다.
마무리
이처럼 간단한 대수 변형만으로 두 분수 사이의 관계를 만족하는 ΔX를 빠르게 계산할 수 있습니다. 다만 d와 c의 값이 같아지면 분모가 0이 되어 나눗셈 오류가 발생하므로, 실제 프로젝트에서는 이 경우를 별도로 검사하고 처리해 주는 것이 좋습니다. 튜토리얼 내용에 대해 궁금한 점이 있다면 댓글로 남겨주세요.