Исправить программу - Prolog

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

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

Напечатать элементы списка, стоящие на четных местах и найти количество элементов списка, которые кратны 5. У меня задача сделана на 2 списка,а мне нужно чтоб все в одном выводило списке и ,числа вводили с клавиатуры а не заданные были

Решение задачи: «Исправить программу»

textual
Листинг программы
domains
int=integer
intl=int*
 
predicates
read_list(intl)
nuc(intl,intl,int,int)
task
 
clauses
read_list([H|T]) :- readint(H),!,read_list(T).
read_list([]).
 
nuc([],[],0,_).
nuc([H|T],[H|R],Q,N) :- (N mod 2)=0,(H mod 5)=0, N1=N+1, nuc(T,R,S,N1), Q=S+H. 
nuc([H|T],[H|R],Q,N) :- (N mod 2)=0,(H mod 5)<>0, N1=N+1, nuc(T,R,Q,N1).
nuc([H|T],R,Q,N) :- (N mod 2)<>0,(H mod 5)=0, N1=N+1, nuc(T,R,S,N1), Q=S+H. 
nuc([H|T],R,Q,N) :- (N mod 2)<>0,(H mod 5)<>0, N1=N+1, nuc(T,R,Q,N1). 
 
task:- write("Enter list"),nl,read_list(A),nuc(A,R,S,1),write("List of elements on even position: "),write(R),nl,
write("Summa of elements of five folds="),write(S),nl.

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

  1. В коде используется язык программирования Prolog.
  2. Код содержит два предиката: read_list и nuc.
  3. Предикат read_list используется для чтения списка целых чисел.
  4. Предикат nuc используется для нахождения суммы элементов списка, которые находятся на четной позиции с определенным сдвигом.
  5. В коде присутствуют четыре различных варианта вызова предиката nuc, которые обрабатывают список различной длины и четности.
  6. Для решения задачи необходимо ввести список целых чисел, после чего программа выведет список элементов на четной позиции и сумму элементов пяти последовательных сдвигов.

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

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