На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Удаление N первых элементов списка на Прологе
    Добрый вечер!
    Помогите написать программу на прологе:удаление N первых элементов на прологе(Prolog MFC Application).
    Есть наброски, да вот только они не верны!Помогите разобраться в чем дело и найти ошибку! Заранее всем спасибо!
    Код программы:
    del(0, L, L):- !.
    del(N, [_|L], L1):-del(N1, L, L1),N1 is N-1.
    ?- del(3, [10,9,8,7,6,5,4,3,2,1], L).
    Пролог вечно выдает следующую ошибку:
    Error! 10: No sense at line 3, after clause 1.
    Look in the help for this error.
    1 error, 0 warnings.
    и выделяет del(N, [_|L], L1):-del(N1, L, L1),N1 is N-1. эту строчку.
    С уважением, Sne*ana.
      Снежана,

      как-то так...

      ExpandedWrap disabled
        del(X, 0, X).
        del([_|X],1,X).
        del([_|X],N,Y) :- N > 1,
           N1 is N - 1, del(X,N1,Y).
         
        target(Y):-del([a,b,c,d,e,f,g],2,Y).
        Огромное спасибо!
          p([X],0,[X]).
          p([AL|BL],1,[BL]).
          p([AL|BL],n,[AL|CL]):-p([BL],n-1,[CL]).


          Это второй предикат.

          p(X,[Y],0,[Y]).
          p(X,[A],1,[X|A]).
          p(X,[AL|BL],n,[AL|CL]):-p(X,[BL],n-1,[CL]).


          есть написанные предикаты как задать им вопрос?

          Добавлено
          Напишите предикат p(X,N,V,L), истинный тогда и только тогда, когда список L получается после добавления X на N-е место в список V

          Напишите предикат p(N,V,L), истинный тогда и только тогда, когда список L получается после удаления N-го элемента из списка V.

          эти задачки.......

          p([X],0,[X]).
          p([AL|BL],1,[BL]).
          p([AL|BL],n,[AL|CL]):-p([BL],n-1,[CL]).


          Это второй предикат.

          p(X,[Y],0,[Y]).
          p(X,[A],1,[X|A]).
          p(X,[AL|BL],n,[AL|CL]):-p(X,[BL],n-1,[CL]).


          есть написанные предикаты как задать им вопрос?
            nik-1977, в p(X,N,V,L) вместо X задаёшь элемент, вместо N - число, вместо V конкретный список.
            Вызываешь этот предикат из главной цели и список L выводишь на печать.
            Аналогично в p(N,V,L) задаёшь N и V, L выводишь на печать.

            Не знаю синтаксис этого Пролога, на Турбо это выглядело бы так:
            goal
            p(3,[a,b,c,d,e],L), write(L).

            И на печати [a,b,d,e].
            Сообщение отредактировано: Swetlana -
              помогите плизззззззз!!!
              помогите написать прогу пожалоста...

              вот задание: Скласти програму, яка iз заданого тексту викреслює всi голоснi букви i видає отриманий результат на екран.
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0384 ]   [ 14 queries used ]   [ Generated: 17.05.24, 22:12 GMT ]