Организовать массив записей, содержащий информацию о результатах сдачи последней сессии вашими товарищами - 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

Объяснение кода листинга программы

  1. Создается пространство имен aeon.core.
  2. Создается атом students, который будет хранить информацию о студентах.
  3. Создается константный список subjects, содержащий список предметов.
  4. Определяется тип записи Person, который представляет собой информацию о студенте, включая его имя и фамилию.
  5. Определяется функция session, которая принимает список предметов и возвращает ассоциативный массив, где ключами являются предметы, а значениями - случайно сгенерированные числа от 2 до 6.
  6. Определяется функция add-person, которая принимает имя и фамилию студента, вычисляет средний балл по всем предметам и добавляет информацию о студенте в атом students.
  7. Используя doseq, вызывается функция add-person для каждого элемента списка имен и фамилий.
  8. Используя doseq, выводится информация о каждом студенте, хранящемся в атоме students.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы