소개
이 실습에서는 C 프로그래밍에서 최대 공약수 (GCD) 알고리즘을 사용하여 분수를 간소화하는 방법을 배우게 됩니다. 이 실습은 사용자 입력으로 분자와 분모를 읽고, GCD 를 계산한 다음, GCD 로 분자와 분모를 나누어 간소화된 분수를 얻는 다음 단계를 다룹니다. 이 실습은 분수 간소화 개념을 이해하고 C 프로그래밍 기법을 사용하여 구현하는 데 도움을 주기 위한 것입니다.
이 실습에서는 C 프로그래밍에서 최대 공약수 (GCD) 알고리즘을 사용하여 분수를 간소화하는 방법을 배우게 됩니다. 이 실습은 사용자 입력으로 분자와 분모를 읽고, GCD 를 계산한 다음, GCD 로 분자와 분모를 나누어 간소화된 분수를 얻는 다음 단계를 다룹니다. 이 실습은 분수 간소화 개념을 이해하고 C 프로그래밍 기법을 사용하여 구현하는 데 도움을 주기 위한 것입니다.
이 단계에서는 분수 간소화를 위한 C 프로그램에서 사용자 입력으로 분자와 분모를 읽는 방법을 배웁니다.
먼저, 분수 간소화 프로그램을 위한 새로운 C 파일을 생성합니다.
cd ~/project
nano fraction_simplify.c
이제 분자와 분모를 읽는 다음 코드를 추가합니다.
#include <stdio.h>
int main() {
int numerator, denominator;
printf("분자를 입력하세요: ");
scanf("%d", &numerator);
printf("분모를 입력하세요: ");
scanf("%d", &denominator);
printf("분자: %d\n", numerator);
printf("분모: %d\n", denominator);
return 0;
}
이제 프로그램을 컴파일하고 실행해 봅시다.
gcc fraction_simplify.c -o fraction_simplify
./fraction_simplify
예시 출력:
분자를 입력하세요: 12
분모를 입력하세요: 18
분자: 12
분모: 18
코드 설명:
scanf()는 사용자로부터 정수 입력을 읽는 데 사용됩니다.%d는 정수 형식 지정자입니다.&numerator와 &denominator는 입력 값을 저장할 메모리 주소를 전달합니다.printf()는 입력된 분자와 분모를 표시하는 데 사용됩니다.이 단계에서는 최대 공약수 (GCD) 알고리즘을 구현하고 이를 사용하여 분수를 간소화합니다.
이전 프로그램을 수정하여 GCD 계산 함수를 추가해 봅시다.
cd ~/project
nano fraction_simplify.c
다음 구현으로 코드를 업데이트합니다.
#include <stdio.h>
// 유클리드 알고리즘을 사용하여 GCD 를 계산하는 함수
int computeGCD(int a, int b) {
// 양수로 변환
a = (a > 0) ? a : -a;
b = (b > 0) ? b : -b;
// 유클리드 알고리즘
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
int main() {
int numerator, denominator, gcd;
printf("분자를 입력하세요: ");
scanf("%d", &numerator);
printf("분모를 입력하세요: ");
scanf("%d", &denominator);
// GCD 계산
gcd = computeGCD(numerator, denominator);
// 분수 간소화
int simplified_numerator = numerator / gcd;
int simplified_denominator = denominator / gcd;
printf("원래 분수: %d/%d\n", numerator, denominator);
printf("간소화된 분수: %d/%d\n", simplified_numerator, simplified_denominator);
return 0;
}
프로그램을 컴파일하고 실행합니다.
gcc fraction_simplify.c -o fraction_simplify
./fraction_simplify
예시 출력:
분자를 입력하세요: 12
분모를 입력하세요: 18
원래 분수: 12/18
간소화된 분수: 2/3
코드 설명:
computeGCD()는 유클리드 알고리즘을 사용하여 최대 공약수를 찾습니다.이 단계에서는 다양한 입력 시나리오를 처리하고 명확한 출력 형식을 제공하도록 분수 간소화 프로그램을 개선합니다.
보다 강력한 분수 출력을 포함하도록 프로그램을 업데이트해 봅시다.
cd ~/project
nano fraction_simplify.c
다음 구현으로 코드를 업데이트합니다.
#include <stdio.h>
// 유클리드 알고리즘을 사용하여 GCD 를 계산하는 함수
int computeGCD(int a, int b) {
a = (a > 0) ? a : -a;
b = (b > 0) ? b : -b;
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// 특수 케이스 처리를 포함한 분수 출력 함수
void printFraction(int numerator, int denominator) {
// 0 으로 나누는 경우 처리
if (denominator == 0) {
printf("Error: 0 으로 나눌 수 없습니다.\n");
return;
}
// GCD 계산
int gcd = computeGCD(numerator, denominator);
// 분수 간소화
int simplified_numerator = numerator / gcd;
int simplified_denominator = denominator / gcd;
// 부호 처리
if (simplified_denominator < 0) {
simplified_numerator = -simplified_numerator;
simplified_denominator = -simplified_denominator;
}
// 결과 출력
printf("원래 분수: %d/%d\n", numerator, denominator);
// 정수와 분수에 대한 다른 출력
if (simplified_denominator == 1) {
printf("간소화된 분수: %d\n", simplified_numerator);
} else {
printf("간소화된 분수: %d/%d\n",
simplified_numerator, simplified_denominator);
}
}
int main() {
int numerator, denominator;
printf("분자를 입력하세요: ");
scanf("%d", &numerator);
printf("분모를 입력하세요: ");
scanf("%d", &denominator);
// 분수 출력 함수 호출
printFraction(numerator, denominator);
return 0;
}
프로그램을 컴파일하고 실행합니다.
gcc fraction_simplify.c -o fraction_simplify
./fraction_simplify
예시 출력:
분자를 입력하세요: 12
분모를 입력하세요: 18
원래 분수: 12/18
간소화된 분수: 2/3
분자를 입력하세요: 15
분모를 입력하세요: 5
원래 분수: 15/5
간소화된 분수: 3
분자를 입력하세요: -12
분모를 입력하세요: 18
원래 분수: -12/18
간소화된 분수: -2/3
코드 설명:
printFraction() 함수를 추가했습니다.이 실습에서는 사용자 입력으로 분자와 분모를 읽고, 유클리드 알고리즘을 사용하여 최대 공약수 (GCD) 를 계산한 다음, GCD 로 분자와 분모를 나누어 분수를 간소화하는 방법을 배웁니다. 간소화된 분수가 출력됩니다.
핵심 단계는 다음과 같습니다. 1) 사용자 입력으로 분자와 분모를 읽고, 2) 최대 공약수를 찾기 위해 GCD 알고리즘을 구현하고, 3) GCD 로 분자와 분모를 나누어 간소화된 분수를 얻습니다.