Inak povedané, hlavná funkcia má vrátiť maximálne číslo, zo všetkých čísel menších ako zadané číslo.

Základom môže byť všeobecná schéma spracovania na ľubovolnej úrovni.

Jedným z možných riešení je, že v hlavnej funkcií použijeme funkciu mymax, vracajúcu maximálne číslo spomedzi 2 argumentov. Pričom v medzi argumentmi môžu byť aj iné prvky ako len čísla (tie sa potom ignorujú).


(defun mymax (a b)
 (cond ((AND (NUMBERP a) (NUMBERP b)) (max a b))
       ((NUMBERP a) a)
       ((NUMBERP b) b)
       (T NIL)
 )
)

; Hlavná funkcia.
(defun ltmax (cislo sv)
 (cond ((AND (NUMBERP sv) (< sv cislo)) sv)
       ((ATOM sv) NIL)
       (T (mymax (ltmax cislo (first sv)) (ltmax cislo (rest sv))))
 )
)

; Príklady:
(ltmax 6 '(1 2 (3 4 (5 6 7)) 5)) ; -> 5
(ltmax -9 '(-8 (-9 -10) ((-1)))) ; -> -10

Autori[ ZADANIE | AKO ZAČAŤ | RIEŠENIE ]
Posledná aktualizácia 4. 9. 2001
back  home  next