Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2015, 11:35   #1
Mur666
Новичок
Джуниор
 
Регистрация: 12.11.2015
Сообщений: 2
По умолчанию Ребята, помогите найти ошибку в программе(Prolog, табулирование функции)

Ребята, помогите найти ошибку в программе(Prolog, табулирование функции)

Табулирование функции Y=2/((x-2)ln(x))
Код:
PREDICATES
  func(real,real,real)
CLAUSES
  func(A,B,H):- A<=B ,A<=2, write(A,"End"), nl, A1=A+H, func(A1, B, H)
  func(A,B,H):- A<=B ,A>2 ,Y=2/((A-2)*ln(A)) ,Write(A," ",Y) ,nl ,A1=A+H, func(A1,B,H).
GOAL
  ClearWindow,
  Write ("a>"), readreal(A),
  Write ("b>"), readreal(B),
  Write ("h>"), readreal(H),
  func(A,B,H).
  ClearWindow,
  func(A,B,H).

Ребят я исправил, проверьте плиз...
Табулирование функции Y=2/((x-2)ln(x))
Код:
PREDICATES
func(real,real,real)
CLAUSES
func(A,B,H):- A<=B ,A<=0, write(A,"No"), nl, A1=A+H, func(A1, B, H).
func(A,B,H):- A<=B ,A>0, A<1 ,Y=2/((A-2)*ln(A)) ,Write(A," ",Y) ,nl ,A1=A+H, func(A1,B,H).
func(A,B,H):- A<=B ,A=1, write(A,"No"), nl, A1=A+H, func(A1, B, H).
func(A,B,H):- A<=B ,A>1, A<2 ,Y=2/((A-2)*ln(A)) ,Write(A," ",Y) ,nl ,A1=A+H, func(A1,B,H).
func(A,B,H):- A<=B ,A=2, write(A,"No"), nl, A1=A+H, func(A1, B, H).
func(A,B,H):- A<=B ,A>2 ,Y=2/((A-2)*ln(A)) ,Write(A," ",Y) ,nl ,A1=A+H, func(A1,B,H).
GOAL
ClearWindow,
Write ("a>"), readreal(A),
Write ("b>"), readreal(B),
Write ("h>"), readreal(H),
ClearWindow,
func(A,B,H).

Последний раз редактировалось Mur666; 12.11.2015 в 16:43.
Mur666 вне форума Ответить с цитированием
Старый 12.11.2015, 13:54   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Почему ты думаешь, что в программе есть ошибка?

Мне вот кажется, что при A = 2 решения нет, т.к. выйдет деление на ноль
И при A < 0 решения нет, т.к. вычисляется логарифм из A. Я не увидел у вас такого в коде.
Т.е. тут не ошибка, а вообще код неверный.

Ну и я нашел опечатку - после первого func(A,B,H) должна стоять точка.

Я не уверен, что write умеет обрабатывать несколько аргументов сразу.

Мне кажется, что write - это фукнция, но Write - это переменная.
rrrFer вне форума Ответить с цитированием
Старый 12.11.2015, 13:59   #3
Mur666
Новичок
Джуниор
 
Регистрация: 12.11.2015
Сообщений: 2
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Почему ты думаешь, что в программе есть ошибка?

Мне вот кажется, что при A = 2 решения нет, т.к. выйдет деление на ноль
И при A < 0 решения нет, т.к. вычисляется логарифм из A. Я не увидел у вас такого в коде.
Т.е. тут не ошибка, а вообще код неверный.

Ну и я нашел опечатку - после первого func(A,B,H) должна стоять точка.

Я не уверен, что write умеет обрабатывать несколько аргументов сразу.

Мне кажется, что write - это фукнция, но Write - это переменная.

Подскажи как правильно, я вообще никак понять не могу, что там делать нужно, а лабу сдавать нужно...
Mur666 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Табулирование функции(Prolog) Tomogochi Помощь студентам 2 14.10.2011 22:11
Помогите найти ошибку в программе k1r1ch Общие вопросы Delphi 7 04.10.2009 09:36
помогите на найти ошибку в программе SYL@R Помощь студентам 1 28.11.2008 12:35
Помогите найти ошибку в программе KnDmPetr Паскаль, Turbo Pascal, PascalABC.NET 5 10.03.2008 14:19