Отсортировать базу данных методом слияния - Prolog

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

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

Работаю в SWI-Prolog. Реализовал всё, кроме сортировки. Необходимо упорядочить список объектов досуга по количеству мест с помощью сортировки слиянием. Поискав, понял, что нужно сначала БД засунуть в список, затем производить манипуляции с ним. findall(Amount, acc(_,_,_,_,_,Amount,_), Object_list), Но тут в список помещается лишь 1 параметр записи. Как засунуть всё? И как отсортировать базу?

Решение задачи: «Отсортировать базу данных методом слияния»

textual
Листинг программы
% помещаем в список поле, по которому будем сортировать базу
findall(LastName, acc(_, _, LastName, _,), Object_list), 
 
 % сортируем этот список любым из методов
sorting(Object_list, Sorted_list),
 
% показываем базу с помощью этого списка в отсортированном виде
show_sorted(Sorted).
 
 
%********show_sorted********
show_sorted([]).
show_sorted([H|T]) :- acc(Number, Name, H, Age), 
                      write(Number), write(' '), 
                      write(H), write(' '), 
                      write(LastName),  write(' '), 
                      write(Age), nl, 
                      show_sorted(T).

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

  1. Сначала мы объявляем список, который будем сортировать, используя поле LastName.
  2. Затем мы сортируем этот список любым из методов.
  3. После сортировки мы выводим отсортированный список с помощью функции show_sorted.
  4. Функция show_sorted сначала проверяет, пуст ли список. Если это так, она завершает свою работу.
  5. Если список не пуст, она извлекает первый элемент и записывает его в переменную H.
  6. Затем она записывает номер, имя, фамилию и возраст этого элемента.
  7. Наконец, она рекурсивно вызывает себя для оставшейся части списка.

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


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

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

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