Я пишу программу-схему в dr Racket, которая принимает список чисел, представляющих матрицу, устанавливает элемент в списке на указанное число. Пока он работает для строки 1 столбца 1 случая и знает, где разместить число, но в любом другом случае он составляет списки списков. Я попытался сделать функцию, чтобы помочь, но все еще получаю ту же ошибку. Любая помощь будет принята с благодарностью. Ошибка, которую я получаю:
(матрица setCell 2 2 9) ((2 4 6 8) (1 (9 5 7)) (2 9 0 1))
я нуждаюсь
(матрица setCell 2 2 9) ((2 4 6 8) (1 9 5 7) (2 9 0 1))
Любая помощь будет принята с благодарностью.
(define Matrix '(( 2 4 6 8 )( 1 3 5 7)( 2 9 0 1)))
;getCell Matrix Row Column
;if i want row 2 col 2
(define (getCell Matrix Row Column)
(if (= Row 1)
(if (= Column 1)
(car (car Matrix))
(getCell (cons (cdr (car Matrix)) ()) Row (- Column 1))
)
(getCell (cdr Matrix) (- Row 1) Column)
)
)
;> (getCell Matrix 1 1)
;2
;(define Matrix '(( 2 4 6 8 )( 1 3 5 7)( 2 9 0 1)))
;setCell Matrix Row Column Item
(define (setCell Matrix Row Column Item)
(if (= Row 1)
(if (= Column 1)
(helpMe Matrix Item)
(cons
(cons (car (car Matrix))
(setCell (cons (cdr (car Matrix)) ()) Row (- Column 1) Item))
(cdr Matrix))
)
(cons (car Matrix) (setCell (cdr Matrix) (- Row 1) Column Item))
)
)
(define (helpMe Matrix Item)
(cons (cons Item (cdr (car Matrix))) (cdr Matrix)))
;ERROR:
;>(setCell Matrix 2 2 9)
;((2 4 6 8) (1 (9 5 7)) (2 9 0 1))
;> (setCell Matrix 1 1 9)
;((9 4 6 8) (1 3 5 7) (2 9 0 1))