Исправить программу - Prolog
Формулировка задачи:
Напечатать элементы списка, стоящие на четных местах и найти количество элементов списка, которые кратны 5. У меня задача сделана на 2 списка,а мне нужно чтоб все в одном выводило списке и ,числа вводили с клавиатуры а не заданные были
Листинг программы
- domains
- m=integer*
- n=integer
- predicates
- spisok(m,n)
- spisok2(m)
- clauses
- spisok([],0):-!.
- spisok([H|T],K):-
- H mod 5 = 0, spisok(T,K1),K=K1+1;
- spisok(T,K).
- spisok2([X,Y|Z]):-
- write(Y," "),spisok2(Z);
- !.
- goal spisok([10,4,50,5,3,45,56,15,7],L),write("Kolichestvo chisel kratnyh 5 = ",L),nl,nl,spisok2([1,2,3,4,5,6,7]).
Решение задачи: «Исправить программу»
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.
Объяснение кода листинга программы
- В коде используется язык программирования Prolog.
- Код содержит два предиката: read_list и nuc.
- Предикат read_list используется для чтения списка целых чисел.
- Предикат nuc используется для нахождения суммы элементов списка, которые находятся на четной позиции с определенным сдвигом.
- В коде присутствуют четыре различных варианта вызова предиката nuc, которые обрабатывают список различной длины и четности.
- Для решения задачи необходимо ввести список целых чисел, после чего программа выведет список элементов на четной позиции и сумму элементов пяти последовательных сдвигов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д