2014-08-31 2 views
-1

Я написал код для отображения всех позиций в квадрате квадрата, например, если пользователь входит в 4, квадрат имеет размер 4x4 и все его позиции должны быть напечатаны. Я написал пролог программы для этого, но я получаю сообщение об ошибке оператора ожидается .... Вот мой код:Оператор ошибок ожидается в прологе

printsqpos(N):- printnum(1,N). 

printnum(I,NUM):- I<=NUM,printrow(I,NUM),N1 is I+1,printnum(N1,NUM). 

printrow(I,N):- printcell(I,1,N). 

printcell(I,J,N):- J<=N,write(I,J),K is J+1,printcell(I,K,N). 

Я новичок в пролога и практиковать вещь ... Пожалуйста, помогите мне

ответ

2

Источник ошибки: ..., J <= M, ... написать ..., J =< M, ... вместо.

В Прологе меньше или равно указано =<. Сначала это может показаться странным. Но частое использование Prolog заключается в том, чтобы внедрить теоретические прокси. Там <= скорее рассматривается как стрелка вправо-влево, а не оператор сравнения.

Но есть еще: Возьмите printnum/2, который состоит из одного рекурсивного правила. Это означает, что этот предикат будет никогда преуспеть. Это может привести к сбою или циклу.

+0

Да, ваш ответ прекрасен .... Я не знаю, почему я получил отрицательный рейтинг с этим .... Я только начал изучать porlog ..... так что эти сомнения очевидны –

+0

не вы думаю, когда первое условие I =

+0

@JatinKhurana: Вы правы. Моя точка зрения заключалась только в том, что она никогда не преуспеет - и обычно ожидается, что предикат будет успешным. – false

Смежные вопросы