Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для Neodinznak
2 / 2 / 0
Регистрация: 25.04.2013
Сообщений: 35

Замена символов в Visual Prolog

23.12.2014, 21:16. Показов 2323. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять , почему не работает. Это пример из учебника.
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
implement main
    open core,console,string
 
domains
    charlist = char*. /*Список символов*/
 
class predicates
    chlist_string:(charlist, string)nondeterm anyflow.
clauses
    chlist_string([], "").
    chlist_string([H|T], S):-
        chlist_string(T, S1), 
        S = concat(chartostring(H),S1).
/* Предикат замены символов в строке */
class predicates
    zamena_simv:(string, string, char, char) nondeterm (i,o,i,i).
clauses
    zamena_simv(S, S1, A, B):-
    chlist_string(S, LS),
        замена(LS, RLS, A, B),!,
        chlist_string(RLS, S1).
class predicates
    замена:( charlist, charlist, char, char) nondeterm anyflow.
clauses
    замена([], [],_, _).
    замена([A|T1], [B|T2], A, B):-
        замена(T1,T2,A , B).
    замена([X|T1], [X|T2], A, B):-
        замена(T1,T2,A , B).
    run():- console::init(),
        L = replaceAll("локон волосл","л","к"),
        write("локон волосл","\t",L), nl,
        zamena_simv("локон волосл", L1, ' ',' '),
        write("локон волосл","\t",L1), nl,!.
    run().
 
 
end implement main
goal
    mainExe::run(main::run).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2014, 21:16
Ответы с готовыми решениями:

Замена четных символов в строке на Turbo Prolog
Добрый вечер. Имеется следующая задача: Составьте программу, меняющую в слове X букву «а» на букву «e», если «а» стоит на четном месте....

Visual Prolog. Представление символов и строк, операции над строками.
1. Разработать программу реализующую различные способы представления символов и строк, а также выполнения операций над строками. 2....

Перенос программы с Visual Prolog 7.1 в Visual Prolog 7.5
Проблема переноса. Взяла пример с книги Visual Prolog 7.1 для начинающих. Это игра червь. Вроде всё, что не компилировалось я исправила, но...

1
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
24.12.2014, 01:19
Значит, в учебнике приведен неработающий пример. Приведите ссылку на учебник.

И в следующий раз уточняйте, что означает "не работает".

Ошибки в Вашей программе можно разделить на 3 большие группы.
1) Куча неизвестных предикатов возникает из-за того, что в примере вовсю используются предикаты из классов string и console без указания квалификатора. Это лечится расширением области видимости. Включите нужные классы в директиву open в самом начале модуля:
Prolog
1
2
implement main
    open core, string, console
2) В предикате zamena_simv написано chlist_string(S, LS), что неправильно, так как первым должен быть список, хоть он входной, хоть выходной.

3) И когда мы всё это исправим, то увидим, что chlist_string никак не может работать anyflow, потому что в нем написано
Prolog
1
S = concat(chartostring(H),S1).
А это работает явно в одну сторону.
Поэтому либо какой-то умник "подправил" эту строчку, не озаботившись проверкой всех направлений работы предиката,
либо другой умник взял и приписал anyflow к предикату, который может работать только в одну сторону.

Напрашивающееся решение - таки разделить предикаты, написать отдельный string_chlist
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2014, 01:19
Помогаю со студенческими работами здесь

Из Turbo Prolog в Visual Prolog - где будут отличия в коде?
ребята ,помогите. есть прога на турбо прологе,а нужно отредактировать под visual prolog 7.5. Что изменится? Где отличия?.. ниже...

Пожалуйста, помоите переделать программу с Turbo Prolog на Visual Prolog
DOMAINS l_i=integer* l_s=string* i=integer s=string c=char structura=str(i,s) %Структура Порода-Параметры и его список ...

Перевести код из turbo prolog в visual prolog
не подскажите плиз как будет выглядеть код turbo prolog в Visual Prologe 5.2 turbo prolog: domains int=integer intl=int* ...

Перевести код из turbo prolog в visual prolog
не подскажите плиз как будет выглядеть код turbo prolog в Visual Prologe 7.3 turbo prolog: predicates for(integer,integer) ...

Код Turbo Prolog переделать в Visual Prolog 5.2
Помогите пожалуйста переделать код Turbo Prolog в Visual Prolog 5.2 domains st=st(string,real,real,real,real) st1=st1(string,real) ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru