Lisp - zadanie z polem/obwodem kola

Lisp - zadanie z polem/obwodem kola
M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
0

Mam za zadanie zrobic takie zadanie:
Zaimplementuj funkcje, ktora na podstawie pola kola obliczy jego obwod oraz odwrotna funkcje, ktora obliczy obwod kola na podstawie jego obwodu. Ponadto, jesli funkcja zostanie wywolana zlymi argumentami (liczby ujemne, symbole) to powinna ewaluowac do listy pustej.

Wie ktos jak to zrobic? Moj pomysl jest taki, ze po podaniu liczby czyli w zasadzie obwodu/pola program wyliczy promien z niego a potem wyliczy obwod/pole. Nie wiem tylko jak zrobic, zeby ewaluowalo do listy pustej :/
Mozna prosic jakies przykladowe rozwiazanie?

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
0

A co już napisałeś?

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
0

nic. jakby bylo zadanie z olbiczeniem pola/obwodu okregu to ok, ale tutaj troche dziwne jest to zadanie.

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
0

dobra, juz mam ta czesc liczaca. jak dodac teraz fragment odpowiedzialny za zwracanie pustej listy jesli podalem zle argumenty?

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
0

Nie wiem jaki dialekt Lispa, ale próbował bym dodać walidację w rodzaju:

Kopiuj
(cond
   [(not (number? v)) '()]
   [(negative? v) '()]
   [else (twoja_funkcja_bez_validacji v)])
M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
0

(defun Obwod (Pole) (* 2 pi (sqrt (/ Pole pi)))) ----> to mi liczy obwod na podstawie pola. wiesz moze jak tutaj dodac taki warunek? bo w zasadzie tylko tego mi brakuje. twoja rada troche zbyt zlozona jest i nie rozumiem :/

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
0

Nie wiem jaki dialekt lispu, ale w Scheme zrobił bym to tak:

Kopiuj
(define (Obwod Pole) 
  (cond
    [(not (number? Pole)) '() ]
    [(negative? Pole) '() ]
    [else (* 2 pi (sqrt (/ Pole pi)))]
  )
)
   
(writeln (Obwod 2))
(writeln (Obwod -2))
(writeln (Obwod 'pole))

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.