Вывести на экран данные в неубывающем порядке - Prolog

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

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

Пролог только начал изучать. Покопался в учебниках и интернете. Написал вот такой "код". Задача элементарная, но...

Решение задачи: «Вывести на экран данные в неубывающем порядке»

textual
Листинг программы
domains
int=integer
intl=int*
file = input
 
predicates
start
get_list(intl)
app(intl,intl,intl)
split(intl,int,intl,intl)
sort(intl,intl)
print_list(intl)
 
clauses
get_list([N|T]) :- not(eof(input)),readint(N),get_list(T).  
get_list([]).
 
app([],X,X).
app([H|T],X,[H|R]) :- app(T,X,R).
 
split([],_,[],[]).
split([H|X],D,[H|L],R) :- H<=D, split(X,D,L,R).
split([H|X],D,L,[H|R]) :- H>D, split(X,D,L,R).
 
sort([],[]).
sort([H|T],Q) :- split(T,H,L,R), sort(L,SL), sort(R,SR), app(SL,[H],Q1), app(Q1,SR,Q).
 
print_list([]).
print_list([H|T]) :- write(H),nl,print_list(T).
 
start :- openread(input,".\\my\\z.txt"),readdevice(input),get_list(U),sort(U,SU),print_list(SU).

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

  1. В начале кода объявлены типы данных и файл для ввода данных.
  2. Далее идут определения функций (predicates) и их реализация (clauses).
  3. get_list считывает числа из файла до тех пор, пока не достигнет конца файла.
  4. app применяет функцию к каждому элементу списка, разделяя его на подсписки.
  5. split разделяет список на подсписки по определенному разделителю.
  6. sort сортирует список по разделителю.
  7. print_list выводит элементы списка на экран.
  8. start запускает программу, открывая файл для чтения, считывая список, сортируя его и выводя на экран.

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


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

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

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