SICP 연습문제 2.12 친절한 풀이

문제

구간의 가운데 값과 허용 오차를 인자로 받되, 허용 오차는 퍼센트 단위로 넘겨 받아서 구간 값을 만드는 make-center-percent를 정의하라. 또, 구간 값에서 허용 오차가 몇 퍼센트인지 알아보는 percent 프로시저도 정의하라. 구간의 가운데 값을 골라내는 center 프로시저는 바로 앞에 나온 것과 같다.

문제로 부터 얻은 것

딱히 없었습니다. 굳이 의미를 찾아보자면,
데이터의 짜맞추개를 다르게 짜보는 시간이었습니다.
다른 방법으로 데이터의 짜맞추개를 만들더라도, 요약의 경계 덕분에 다른 프로시저의 입장에서는 크게 신경쓸 일이 없을 것 같습니다.

문제풀이

문제를 푸는 것은 크게 어렵지 않으므로 자세한 성명은 생략하겠습니다

width=(upperlower)/2width = (upper-lower)/2

center=(upper+lower)/2center = (upper+lower)/2

percent=(width/center)×100percent = (width/center) × 100

(define (make-center-percent c p)
(let ((w (* c p 0.01)))
(make-interval (- c w) (+ c w))))

(define (width x)
(/ (- (upper-bound x) (lower-bound x)) 2))

(define (center x)
(/ (+ (upper-bound x) (lower-bound x)) 2))

(define (percent x)
(* (/ (width x) (center x)) 100))



테스트를 위해 아래의 코드를 실행해 보겠습니다.

(define R (make-center-percent 100 10))

(display R)
(newline)
(width R)
(center R)
(percent R)



테스트 코드가 잘 동작한다면, (90, 110)과 그 외의 수치들을 결과로 내놔야 합니다.
(90,110)을 반환하는 모습



읽어주셔서 감사합니다.