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

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

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

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

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

textual
Листинг программы
(defstruct account checking name history)
 
(defun client (n)
  (when (> n 0)
    (cons (make-account
           :checking (read)
           :name (read)
           :history (list (read) (read) (read) (read)))
           (client (1- n)))))
 
(defun names (w code)
  (loop for a in w
        when (equalp (cadddr (account-history a)) code)
        collect (account-name a)))
 
(defun code-names (w) (names w (read)))
 
> (setf account (client 3))
1111
Jennifer
123
0
1000
1
2222
Michelle
456
1
1000
0
3333
Suzanne
789
1
2000
1
(#S(ACCOUNT :CHECKING 1111 :NAME JENNIFER :HISTORY (123 0 1000 1))
 #S(ACCOUNT :CHECKING 2222 :NAME MICHELLE :HISTORY (456 1 1000 0))
 #S(ACCOUNT :CHECKING 3333 :NAME SUZANNE :HISTORY (789 1 2000 1)))
> (code-names account)
0
(MICHELLE)
> (code-names account)
1
(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
Похожие ответы