Кредитная история представлена в виде подсписка.Организовать выбор клиентов по своевременности возврата кредит - Lisp

Узнай цену своей работы

Формулировка задачи:

В банке собраны сведения о кредитной истории каждого из клиентов (физических лиц): расчетный счет, фамилия клиента, кредитная история. Кредитная история представлена в виде подсписка (<порядковый номер кредита> <код вида кредита> <сумма кредита> <код своевременности погашения>). Организовать выбор клиентов по своевременности возврата кредита. Коды вида кредита: 0 — потребительский; 1 — ипотечный. Коды своевременности погашения: 0 — своевременно; 1 — с опозданием; 2 — не погашен.

Решение задачи: «Кредитная история представлена в виде подсписка.Организовать выбор клиентов по своевременности возврата кредит»

textual
Листинг программы
  1. (defstruct account checking name history)
  2.  
  3. (defun client (n)
  4.   (when (> n 0)
  5.     (cons (make-account
  6.            :checking (read)
  7.            :name (read)
  8.            :history (list (read) (read) (read) (read)))
  9.            (client (1- n)))))
  10.  
  11. (defun names (w code)
  12.   (loop for a in w
  13.         when (equalp (cadddr (account-history a)) code)
  14.         collect (account-name a)))
  15.  
  16. (defun code-names (w) (names w (read)))
  17.  
  18. > (setf account (client 3))
  19. 1111
  20. Jennifer
  21. 123
  22. 0
  23. 1000
  24. 1
  25. 2222
  26. Michelle
  27. 456
  28. 1
  29. 1000
  30. 0
  31. 3333
  32. Suzanne
  33. 789
  34. 1
  35. 2000
  36. 1
  37. (#S(ACCOUNT :CHECKING 1111 :NAME JENNIFER :HISTORY (123 0 1000 1))
  38.  #S(ACCOUNT :CHECKING 2222 :NAME MICHELLE :HISTORY (456 1 1000 0))
  39.  #S(ACCOUNT :CHECKING 3333 :NAME SUZANNE :HISTORY (789 1 2000 1)))
  40. > (code-names account)
  41. 0
  42. (MICHELLE)
  43. > (code-names account)
  44. 1
  45. (JENNIFER SUZANNE)

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

  1. Сначала определяется структура данных для представления аккаунта клиента, с помощью функции defstruct, которая называется account. Эта структура содержит три поля: checking (тип integer), name (тип string) и history (тип list).
  2. Затем определена функция client, которая принимает целочисленный аргумент n и генерирует список из n аккаунтов. Каждый аккаунт создается с помощью функции make-account, которая принимает три аргумента: checking, name и history. Значение поля checking устанавливается с помощью функции read, которая считывает целочисленное значение из стандартного ввода. Значения полей name и history устанавливаются аналогичным образом, с использованием функции read для считывания строковых значений.
  3. Функция names принимает два аргумента: w (список аккаунтов) и code (код клиента). Она использует цикл loop для перебора аккаунтов в списке w. Если значение поля history текущего аккаунта равно code, то функция collect собирает значение поля name этого аккаунта.
  4. Функция code-names является вспомогательной функцией, которая вызывает names с аргументом account (список аккаунтов), который был создан ранее.
  5. После вызова функции code-names с аргументом account, на стандартный вывод выводится список имен клиентов, соответствующих указанному коду. В данном случае, сначала выводится код 0, за которым следуют имена клиентов в порядке их появления в списке аккаунтов: JENNIFER, MICHELLE, SUZANNE.

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


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

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

15   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы