Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 78

Добавить элемент в позицию списка(Поставить ограничение если список меньше числа)

23.04.2022, 13:24. Показов 815. Ответов 6

Студворк — интернет-сервис помощи студентам
Здраствуйте! Программа работает , но если попытаться добавить элемент в позицию списка которой нет, перестает работать . Как это исправить?
Комментарии в коде
Prolog
1
2
3
4
5
6
7
8
9
10
domains 
list=integer
list1=list*
predicates
nondeterm add(list1,list,list,list1)
clauses
add(L,V,0,[V|L]). 
add([H|T],V,N,[H|R]):-N1=N-1,add(T,V,N1,R).
goal
add([1,2,3,4,5,6],4,2,Add).  % Где 4 - Элемент который вставляет . 2- Позиция куда вставляем .
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.04.2022, 13:24
Ответы с готовыми решениями:

Добавить элемент в i позицию списка
Есть код для этой задачи domains list=integer* predicates add(list,integer,integer,list) clauses

Однонаправленный список. Операции: удалить элемент из заданной позиции, добавить элемент в заданную позицию,проверка на неравенство
Помогите. Есть одна написанная. Условия: Очередь. Операции: “+” добавить элемент ; “-“ удалить элемент ; bool() проверка «Пуста...

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

6
 Аватар для Pphantom
2247 / 1506 / 692
Регистрация: 17.03.2022
Сообщений: 4,812
23.04.2022, 13:42
Цитата Сообщение от Lopol Посмотреть сообщение
Как это исправить?
Так ведь все правильно: это нормальная реакция на противоречащее самому себе условие. В рамках постановки задачи предикат add должен возвращать неуспех.

Чтобы что-то "исправить", надо сначала доформулировать задачу - понять, что делать, если в список длины n требуется вставить элемент на позицию k>n+1. Из вариантов: добавить в конец, создать недостающие элементы (с какими-то заданными значениями), еще что-то...
1
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 78
23.04.2022, 13:59  [ТС]
А как сделать так чтобы он просто пихал в конец его ?
0
 Аватар для Pphantom
2247 / 1506 / 692
Регистрация: 17.03.2022
Сообщений: 4,812
23.04.2022, 14:09
Добавить перед нынешней 7-й строкой еще одну альтернативу, такую:
Prolog
1
add([],V,_,[V]).
Смысл - если список для добавления оказался пустым, делаем новый список из единственного добавляемого элемента, не интересуясь номером.
1
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 78
23.04.2022, 14:20  [ТС]
Дружище спасибо тебе большое ,реально долго мучался!Честно не знаю есть ли смысл, просто преподаватель так сказал)
Все работает , только не могу понять как работает)) Он смотрит если список пустой , то добавляет "V" в хвост?
0
 Аватар для Pphantom
2247 / 1506 / 692
Регистрация: 17.03.2022
Сообщений: 4,812
23.04.2022, 14:44
Лучший ответ Сообщение было отмечено Lopol как решение

Решение

Цитата Сообщение от Lopol Посмотреть сообщение
Он смотрит если список пустой , то добавляет "V" в хвост?
Я же выше это написал. Если список пустой, то добавлять элемент "некуда", поэтому результатом добавления будет список из одного этого элемента.
1
0 / 0 / 0
Регистрация: 22.02.2016
Сообщений: 78
23.04.2022, 14:58  [ТС]
Цитата Сообщение от Pphantom Посмотреть сообщение
Я же выше это написал. Если список пустой, то добавлять элемент "некуда", поэтому результатом добавления будет список из одного этого элемента.
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.04.2022, 14:58
Помогаю со студенческими работами здесь

Добавить элемент в позицию списка(Объяснить что делает программа)
Здраствуйте , программа работает, но не могу понять эти две строчки: add(L,V,0,). add(,V,N,):-N1=N-1,add(T,V,N1,R). Что они...

Имеется список, элементами которого являются вещественные числа. Добавить в начало списка элемент, равный среднему геоме
Имеется список, элементами которого являются вещественные числа. Добавить в начало списка элемент, равный среднему геометрическому...

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

Создать список, ввести элемент и добавить этот элемент в начало списка
создать список,ввести элемент и добавить этот элемент в начало списка

Дан список. Выбрать из списка все числа меньше заданного числа k и упорядочить их по возрастанию
Дан список. Выбрать из списка все числа меньше заданного числа k и упорядочить их по возрастанию.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru