당신이 배우는 데있어 세부 지향적이지 않은 것을 알기 쉽게 설명합니다. 귀하의 코드에는 수많은 실수가 포함되어 있으며 다른 언어의 습관을 학습 계획에 반영 할 수 있습니다. DrRacket은 프로그램에 구문 오류가 있다는 것을 명확하게 보여 주므로 시작할 때 좋은 곳입니다. 내가 굵은 글씨로했다
섹션은 코드의 서식 불량 인 else
표현
(define (sum_of_greatest_squares a b c)
(if(> a b)
(if(> a c)
(if(> b c) ((+ (sqr a) (sqr c))(+ (sqr a) (sqr b))))
(+ (sqr a) (sqr c))
)
(if(> b c)
(if (> a c) ((+ (sqr a) (sqr b))(+ (sqr b) (sqr c)))
(+ (sqr c) (sqr b))))
))
누락 때문에 실수가 만들어진 곳 어렵게 볼 수 있습니다. 를 따라 이동
는
, 여기에 당신이 어떤 언어로 할 수처럼 당신이 원하는 목적지 당신은 단지 ()
넣지 수있는 또 다른 큰 실수
((+ (sqr a) (sqr c))(+ (sqr a) (sqr b)))
입니다. ()
은 Lisp/Scheme/Racket에서 프로 시저 응용 프로그램으로 사용됩니다. 말도 안돼 -
위의 라인이
((+ (sqr 1) (sqr 3))(+ (sqr 1) (sqr 2)))
((+ 1 9 )(+ 1 4 ))
(10 5)
마지막 줄은 "숫자 10 숫자 5를 적용"라고 (10 5)
인에 해당하는 것, a = 1
, b = 2
및 c = 3
말.
나중에 코드에서 실수를 반복합니다. 먼저이 문제를 수정하고 질문을 업데이트하십시오.
ps : sum_of_greatest_squares
과 같은 snake_case 이름은 사용하지 마십시오. 일반적으로 스키마 작성자는이를 sum-of-greatest-squares
으로 지정합니다.
어쨌든 어떤 절차를 수행해야할지 명확하지 않습니다. 내 은으로 추정되며 두 개의 가장 큰 입력을 제곱 한 다음 합산 한 것입니다.
당신 은 함께 계산을 수행 할 수있는 두 개의 인수를 결정 if
표현의 거대한 계층 구조를 할 수 ...하지만 또 다른 방법은 항상 결과를 계산하기 위해 같은 두 개의 인수를 사용하는 것입니다,하지만에 if
식을 사용하여 적절한 인수를 올바른 위치로 이동하십시오.
(define (sqr x) (* x x))
(define (sum-of-greatest-squares a b c)
(cond ((< a b) (sum-of-greatest-squares b c a))
((< b c) (sum-of-greatest-squares a c b))
(else (+ (sqr a) (sqr b)))))
이 항상 두 개의 큰 숫자의 제곱의 합계 것이다 절차 측면의 대안으로 이것을 고려하지만, 훨씬 깨끗한 방법으로 그렇게
마지막으로, 요 르그 실제로 어디에도 아무 것도 인쇄하지 않는다고 언급합니다. DrRacket이 귀하의 프로그램 결과를 Interactions 창에 표시하지 않는다는 것을 의미한다는 것을 알고 있습니다.그러나 명시 적으로 콘솔로 인쇄하려면 display* and print* procedures
아무데도 인쇄하지 않습니다. –
http://stackoverflow.com/help/mcve – naomik