Кажется, я должен сделать это подробно; это моя домашняя работа. Я не хочу копировать написанный вами код. я новичок; то, что я пытаюсь узнать, это то, как разложить объект на отдельные части, а затем сосредоточиться на том, какую функцию я должен использовать для решения проблемы. Самостоятельно справиться с этими задачами немного сложно, потому что я совсем новичок в Лиспе, на самом деле в программировании. Надеюсь, вы сможете мне помочь.
Вот проблема: есть заданная константа
(defconstant *storms* '((bob 65)
(chary 150)
(jenny 145)
(ivan 165)
(james 120)))
Каждый шторм представлен списком с его названием и скоростью ветра.
Скорости ветра следует классифицировать следующим образом:
3974 tropical
7595 cat-1
96110 cat-2
111130 cat-3
131155 cat-4
156 и более cat-5
Теперь мне нужно написать две функции:
storm-categories
должен генерировать имена категорий, например:(bob tropical)
,(chary cat-1)
,а
storm-distribution
должно генерировать количество штормов в каждой категории, например:(cat-1 1)
,(cat-2 0)
,
Я пытаюсь решить эту проблему следующим образом:
Используйте операторы
if
, чтобы определить тип скорости ветра:(если (и (> x 39) (‹ x 73)) (выведите 'тропический)) (если (и (> x 74) (‹ x 95)) (выведите 'cat-1)) (если (и (> x 96) (‹ x 110)) (напечатать 'cat-2)) (если (и (> x 111) (‹ x 130)) (напечатать'cat-3)) (если (и (> x 131) ( ‹ x 155)) (print'cat-4)) (if (и (> x 156)) (print 'cat-5))
Замените скорость ветра (например,
65
) на тип ветра (например,cat-1
).(цикл для x в storms do (rplacd x 'windtype)
У меня есть простое представление о первой функции, но я до сих пор не знаю, как ее реализовать. Я не трогал функцию распределения, потому что я все еще застрял на первом.