Создайте предикат, вычисляющий среднегеометрическое натуральных чисел, кратных 3, не превосходящих N - Prolog

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

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

Создайте предикат, вычисляющий среднегеометрическое натуральных чисел, кратных 3, не превосходящих N.

Решение задачи: «Создайте предикат, вычисляющий среднегеометрическое натуральных чисел, кратных 3, не превосходящих N»

textual
Листинг программы
  1. predicates
  2. prod(real,real,real)
  3. pow(real,real,real)
  4. count(real,real,real)
  5. task(real,real)
  6.  
  7. clauses
  8.  
  9. prod(N,N,N) :- !.
  10. prod(N,K,1) :- K>N, !.
  11. prod(N,K,Z) :- K3=K+3, prod(N,K3,U), Z=U*K.
  12.  
  13. pow(X,Y,Z) :- exp(Y*ln(X))=Z.
  14.  
  15. count(N,K,1) :- K=N, !.
  16. count(N,K,0) :- K>N, !.
  17. count(N,K,Z) :- K3=K+3, count(N,K3,U), Z=U+1.
  18.  
  19. task(N,R) :- count(N,3,P), prod(N,3,A), B=1.0/P, pow(A,B,R).
  20.  
  21. goal
  22. write("N="),readint(N),task(N,R),write("R="),write(R),nl.

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

  1. Начнем с определения предикатов:
    • prod(real,real,real) - принимает три аргумента типа real и вычисляет их произведение.
    • pow(real,real,real) - принимает три аргумента типа real и вычисляет их возведение в степень.
    • count(real,real,real) - принимает три аргумента типа real и вычисляет количество натуральных чисел, кратных 3, не превосходящих первого аргумента.
    • task(real,real) - принимает два аргумента типа real и вычисляет среднегеометрическое натуральных чисел, кратных 3, не превосходящих первого аргумента.
  2. Далее, перейдем к определению правил (clauses):
    • prod(N,N,N) :- !. - базовый случай, когда все три аргумента равны N, результат также будет N.
    • prod(N,K,1) :- K>N, !. - если K больше N, то результат будет 1.
    • prod(N,K,Z) :- K3=K+3, prod(N,K3,U), Z=U*K. - если K меньше или равно N, то результат будет произведением аргументов U и K.
    • pow(X,Y,Z) :- exp(Y*ln(X))=Z. - вычисляет значение Z как результат возведения X в степень Y.
    • count(N,K,1) :- K=N, !. - базовый случай, когда K равно N, результат будет 1.
    • count(N,K,0) :- K>N, !. - если K больше N, то результат будет 0.
    • count(N,K,Z) :- K3=K+3, count(N,K3,U), Z=U+1. - если K меньше или равно N, то результат будет суммой аргументов U и 1.
    • task(N,R) :- count(N,3,P), prod(N,3,A), B=1.0/P, pow(A,B,R). - вычисляет значение R как среднегеометрическое натуральных чисел, кратных 3, не превосходящих N.
  3. В конце, определим цель (goal):
    • goal - выводит на экран значения N и R.
  4. В начале главной программы, считывается значение N с помощью функции readint(N).
  5. Затем вызывается функция task(N,R), которая вычисляет значение R.
  6. Наконец, выводятся на экран значения N и R с помощью функции write(N), write(R), nl.

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы