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 |#