Организовать массив записей, содержащий информацию о результатах сдачи последней сессии вашими товарищами - Lisp
Формулировка задачи:
помогите, пожалуйста!
Организовать массив записей, содержащий информацию о результатах сдачи последней сессии вашими товарищами. Определить и дополнить данные средним баллом.
Решение задачи: «Организовать массив записей, содержащий информацию о результатах сдачи последней сессии вашими товарищами»
textual
Листинг программы
(ns aeon.core) (def students (atom [])) ;; => #'aeon.core/students (def ^:const subjects [:accounting :banking :management :marketing :statistics]) ;; => #'aeon.core/subjects (defrecord Person [fname lname]) ;; => aeon.core.Person (defn session [subjects] (zipmap subjects (repeatedly (count subjects) (partial rand-nth (range 2 6))))) ;; => #'aeon.core/session (defn add-person [fname lname] (let [average #(double (/ (apply + %) (count %))) s (session subjects) student (-> (->Person fname lname) (assoc :session s :average (-> s vals average)))] (swap! students conj student))) ;; => #'aeon.core/add-person (doseq [[f l] [["Ivan" "Ivanov"] ["Oleg" "Petrov"] ["Artem" "Smirnov"] ["Sergey" "Popov"]]] (add-person f l)) ;; => nil (doseq [v @students] (println v)) ;; #aeon.core.Person{:fname Ivan, :lname Ivanov, :session {:accounting 2, :banking 2, :management 4, :marketing 4, :statistics 2}, :average 2.8} ;; #aeon.core.Person{:fname Oleg, :lname Petrov, :session {:accounting 5, :banking 5, :management 5, :marketing 5, :statistics 5}, :average 5.0} ;; #aeon.core.Person{:fname Artem, :lname Smirnov, :session {:accounting 4, :banking 4, :management 4, :marketing 5, :statistics 4}, :average 4.2} ;; #aeon.core.Person{:fname Sergey, :lname Popov, :session {:accounting 5, :banking 3, :management 2, :marketing 4, :statistics 3}, :average 3.4} ;; => nil
Объяснение кода листинга программы
- Создается пространство имен
aeon.core
. - Создается атом
students
, который будет хранить информацию о студентах. - Создается константный список
subjects
, содержащий список предметов. - Определяется тип записи
Person
, который представляет собой информацию о студенте, включая его имя и фамилию. - Определяется функция
session
, которая принимает список предметов и возвращает ассоциативный массив, где ключами являются предметы, а значениями - случайно сгенерированные числа от 2 до 6. - Определяется функция
add-person
, которая принимает имя и фамилию студента, вычисляет средний балл по всем предметам и добавляет информацию о студенте в атомstudents
. - Используя
doseq
, вызывается функцияadd-person
для каждого элемента списка имен и фамилий. - Используя
doseq
, выводится информация о каждом студенте, хранящемся в атомеstudents
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д