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

 
Previous Post Perl 펄] 최대 공약수 구하기 함수, 유클리드 호제법; GCD, Euclidean Al...C언어] gets, fgets 함수로, 키보드 문자(문자열) 입력 받기; String In...C언어] scanf 함수로, 문자열/정수/실수 입력 받기; scanf Function In...파일 개수 세기 도스 명령어; File Counter DOS Command매스매티카] 허수 단위 i 입력 방법; Mathematica IMAGINARY UNIT I...매스매티카] 루트 근사값, 제곱근 구하기 함수 사용법; Mathematica Square ...Java 자바] 정수 숫자 입력 받기, 16진수 헥사 입력; Input Hex Int Nu...Java 자바] 실수 입력 받기, 키보드로, 에러 처리 루프; Input Float Num...동영상 비디오 파일 포맷 확장자 종류 설명, Movie File ExtensionC에서 printf 함수로, double, float, int, unsigned int 출...

Perl 펄] 분수 약분 함수 구현; Reduce a Fraction

Friday, March 23, 2007

분수를 약분하는 함수를 만드는 방법입니다. 아래의 reduceFraction 이라는 함수가 완성된 결과입니다.

참고로 컴퓨터에서는 분수 "2분의 1"을, "1/2"로 표현합니다.

분수 약분 예제


스크립트 파일명: example.pl
#!/usr/bin/perl
use strict; use warnings;

  # 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));
  # 출력 결과 (에러): NaN/NaN

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




# 분수 출력 함수
# (분자 분모가 든 배열을 입력받아 출력)
sub printFraction {
  print $_[0], "/", $_[1], "\n";
}


# 분수 약분 함수 (Reduce a Fraction)
# 분자 분모를 입력받아, 약분 후, 분자 분모가 든 배열을 반환
sub reduceFraction {
  my @frac = @_;
  if ($frac[1] == 0) { return "NaN", "NaN"; } # 분모가 0일 경우에 에러 반환

  my $gcd = gcd(@frac);

  return ($frac[0] / $gcd, $frac[1] / $gcd);
}


# 최대 공약수 계산 함수
sub gcd {
  my $a = $_[0];
  my $b = $_[1];

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

  return 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