2014-09-20 3 views
1

저는 Scheme을 처음 접했고 DrRacket을 사용하고 있습니다. 저는 많은 도움이 필요합니다.스키마에서 구조 정의. 도움 요청

나는 어느 정도 이해하고있는 구조를 정의하고 있지만, 나는 걸림돌에 빠져있는 것 같습니다.

"EmployeeRaise"기능은 모든 check-expects에 대해 작동하므로 특정 check-expect에만 작동하도록 만들 필요가 있습니다.

주요 문제를 정의에서,보다 구체적으로 굵게 부분적

(+ (직원 시간당 속도 EM) (* (직원 시간당 속도 EM) 0.1)))

"em"으로 정의 된 직원이 아닌 모든 사람에 대한 직원의 시간당 요금을 어떻게 결정할 수 있는지 파악할 수 없습니다.

세 명의 직원 모두 "엠"으로 정의되어 있다고 생각하지만, 그렇게하지 않을 것입니다.

누구든지 나를 도울 수 있기를 바랍니다.

여기 내 코드입니다 :

(define-struct employee (Name Hourly-rate overtime?)) 

;;Signature: EmployeeRaise: string -> number 
;;Purpose: Consumes an employee and returns an employee with the hourly rate increased by 10%. 
;;Tests 
(check-expect (EmployeeRaise "Ben") 13.2) 
(check-expect (EmployeeRaise "Joe") 16.5) 
(check-expect (EmployeeRaise "Debbie") 22) 
;; Define 
(define (EmployeeRaise employee-Name) 
    (+ (employee-Hourly-rate em) (* (employee-Hourly-rate em) 0.1))) 

답변

5

먼저가 "서명"에서 설명하고 (make-employee에 의해 반환)을 employee 구조를 가지고 어떻게해야 당신의 EmployeeRaise 기능이 아닌 string. 그래서 그걸 반영하기 위해 em에 인수의 이름을 변경할 수 있습니다 :이 기능은 이제 em 인수가 점점에 작동하는지

;;Signature: EmployeeRaise: employee -> number 
;;Purpose: Consumes an employee and returns an employee with the hourly rate increased by 10%. 
;;Tests 
(define (EmployeeRaise em) 
    (+ (employee-Hourly-rate em) (* (employee-Hourly-rate em) 0.1))) 

공지 사항 -하지 당신이 전에했던 em "전역 변수".

다음, 테스트를 위해 당신이 할 수 중 하나

(define ben (make-employee "Ben" 12 true)) 
(define joe (make-employee "Joe" 15 false)) 
(define deb (make-employee "Debbie" 20 true)) 

(check-expect (EmployeeRaise ben) 13.2) 
(check-expect (EmployeeRaise joe) 16.5) 
(check-expect (EmployeeRaise deb) 22) 

또는 단순히이 :

(check-expect (EmployeeRaise (make-employee "Ben" 12 true)) 13.2) 
(check-expect (EmployeeRaise (make-employee "Joe" 15 false)) 16.5) 
(check-expect (EmployeeRaise (make-employee "Debbie" 20 true)) 22) 

참고 : 나는 당신이 HTDP 언어를 사용하는 같은데요를? 내가 그들에 대해 많이 알지 못하기 때문에 어느 것이 맞는지 모를 수 있었고 위의 코드를 실행하여 100 % 정확함을 보장 할 수 없었습니다. 그러나 나는 내가 설명하는 것이 올바른 방향으로 당신을 가리켜 야한다고 생각한다.

+0

처음에는 작동하지 않았지만 지금 편집 한 후에 작동했습니다. 고맙습니다! – BBladem83