Добавление отрицательного элемента после положительного

      Комментарии к записи Добавление отрицательного элемента после положительного отключены

Главная Форумы Программирование Помощь с решением задач на Prolog Задачи на списки Добавление отрицательного элемента после положительного

В этой теме 1 ответ, 2 участника, последнее обновление  Васильев Владимир Сергеевич 2 года/лет, 6 мес. назад.

  • Автор
    Сообщения
  • #1738

    questioner
    Участник

    Друзья, есть задачка на прологе, с которой я уже достаточно долго не могу справиться.
    Нужно написать программу, которая бы в список после каждого положительного элемента вставляла его же, только отрицательный.
    Помогите пожалуйста.

  • #1739

    insert_negative([], []):-!. 
    insert_negative([PositiveHead|Tail], [PositiveHead,NegativeHead|TailResult]):- 
      PositiveHead > 0, !, 
      NegativeHead is -PositiveHead, insert_negative(Tail, TailResult).
    insert_negative([NegativeHead|Tail], [NegativeHead|TailResult]):- 
      insert_negative(Tail, TailResult).

    В пустом списке нет положительных элементов, ничего добавлять не надо — результатом является пустой список.
    В противном случае список разделяется на голову (первый элемент) и хвост (остальные элементы).
    Если первый элемент больше нуля, то вычисляется соответствующее отрицательное число, которое добавляется к результату рекурсивной обработки хвоста после головы. Если же первый элемент не больше ноля — то к результату рекурсивного вызова добавляется лишь первый элемент списка.

Для ответа в этой теме необходимо авторизоваться.