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

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

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

Просмотр 2 сообщений - с 1 по 2 (из 2 всего)
  • Автор
    Сообщения
  • #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).

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

Просмотр 2 сообщений - с 1 по 2 (из 2 всего)

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