컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post 구글 검색창에서 검색 기록 지우는 방법, 이전 검색어 저장 목록 삭제; Delete Goo...VI 와 VIM 차이, '빔'과 '브이 아이' 에디터 차이점; Unix Editor Dif...Python 파이썬] 분수 약분 방법을 함수로 구현; Reduce a Fraction디카] 캐논 풀사이즈 CMOS 센서 실물 사진; DSLR Canon Full Size커피 녹차 홍차 박카스, 카페인의 차이, Coffee / Green Tea Caffeine...Perl 펄] 분수 약분 함수 구현; Reduce a FractionPerl 펄] 최대 공약수 구하기 함수, 유클리드 호제법; GCD, Euclidean Al...C언어] gets, fgets 함수로, 키보드 문자(문자열) 입력 받기; String In...C언어] scanf 함수로, 문자열/정수/실수 입력 받기; scanf Function In...파일 개수 세기 도스 명령어; File Counter DOS Command

Java 자바] 분수 약분 메서드/함수 구현; Reduce a Fraction

Sunday, March 25, 2007

자바에서 분수를 약분하는 방법입니다. 자바 내부적으로는 분수 약분을 지원하지 않았습니다.

아래 소스의
public static int[] reduceFraction(int bunja, int bunmo)
라는 메소드(함수)가 분수를 약분합니다.

분수 약분 예제


소스 파일명: Example.java
public class Example {
  public static void main(String[] args) {

    // 5/10 (10분의 5)
    printFraction(reduceFraction(5, 10));
    // 출력 결과: 1/2

    // 1/2 (2분의 1)
    printFraction(reduceFraction(1, 2));
    // 출력 결과: 1/2

    // 2940/3150 (3150분의 2940)
    printFraction(reduceFraction(2940, 3150));
    // 출력 결과: 14/15

    // 6/63 (63분의 6)
    printFraction(reduceFraction(6, 63));
    // 출력 결과: 2/21

    // 63/6 (6분의 63)
    printFraction(reduceFraction(63, 6));
    // 출력 결과: 21/2

    // 1/1 (1분의 1)
    printFraction(reduceFraction(1, 1));
    // 출력 결과: 1/1

    // 555/555 (555분의 555)
    printFraction(reduceFraction(555, 555));
    // 출력 결과: 1/1

    // 0/1 (1분의 0)
    printFraction(reduceFraction(0, 1));
    // 출력 결과: 0/1

    // 1/0 (0분의 1)
    printFraction(reduceFraction(1, 0));
    // 출력 결과 (에러): 0/0
    // 분모가 0이 될 수는 없음

    // 0/0 (0분의 0)
    printFraction(reduceFraction(0, 0));
    // 출력 결과 (에러): 0/0

  }




  // 분수 출력 함수
  // (분자 분모가 든 배열을 입력받아 출력)
  public static void printFraction(int[] bunsu) {
    System.out.format("%d/%d%n", bunsu[0], bunsu[1]);
  }




  // 분수 약분 함수 (Reduce a Fraction)
  // 분자 분모를 입력받아, 약분 후, 분자 분모가 든 배열을 반환
  public static int[] reduceFraction(int bunja, int bunmo) {
    int[] frac = new int[2];
    frac[0] = bunja;
    frac[1] = bunmo;

    if (frac[1] == 0) { // 분모가 0일 경우에 에러 반환
      frac[0] = 0;
      frac[1] = 0;
      return frac;
    }

    int gcd_result = gcd(frac[0], frac[1]);

    frac[0] = frac[0] / gcd_result;
    frac[1] = frac[1] / gcd_result;

    return frac;
  }




  // 최대 공약수 계산 메서드
  // (Euclidean Algorithm; Euclid's Algorithm)
  public static int gcd(int a, int b) {

    while (b != 0) {
      int temp = a % b;
      a = b;
      b = temp;
    }

    return Math.abs(a);
  }


}



분수 약분 계산기 / 분자 분모 마이너스 부호 처리: ▶▶ 분수 약분 계산기: reduce a Frac Calc

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top