Code Review
Compare your solutions
#| BEGIN (Write your solution here) |#
(define (make-rat n d)
"Создает рациональное число с нормализованными знаками."
(if (= d 0)
(error "Знаменатель не может быть нулем")
(let ((g (gcd n d))
(abs-n (abs n))
(abs-d (abs d)))
(if (< (* n d) 0) ; если числа разных знаков
(cons (/ (- abs-n) g) (/ abs-d g)) ; числитель отрицательный
(cons (/ abs-n g) (/ abs-d g)))))) ; оба положительные
;; Остальные функции остаются такими же
(define (numer rat) (car rat))
(define (denom rat) (cdr rat))
(define (print-rat rat)
(printf "~a/~a\n" (numer rat) (denom rat)))
#| END |#