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

Выяснить, есть ли слове X буква «а», стоящая на нечетном месте после буквы «z» (SWI-Prolog)

21.11.2018, 22:40. Показов 1770. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте,
Есть задача: Напишите программу, выясняющий, есть ли слове X буква «а», стоящая на нечетном месте после буквы «z».
Что я попытался сделать:
Во-первых я разбил задачу на две части:
1) последовательность za
2) нечетность места, на котором стоит a
Ниже представлен код первой задачи, с которой уже возникли трудности. Также не понимаю, как к нему добавить решение первой задачи
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
run :-
    write('Введите строку'),nl,
    read(Sen),
    write('Введенная строка'),nl,
    write(Sen),nl,
    string_to_list(Sen,Sen1),
    sc(Sen1,N),
    provre(N,RES),
    write(RES).
/*Проверка на одновременное выполнение условий provh и provt */
provre(2,Q):-Q = "TRU".
provre(_,Q):-Q = "FALSE".
 
/*проверям, является ли первый элемент буквой "a". Так как до этого мы из строки переходили в список, предикат string_to_list все символы перевел в коды ASCII. a = 97.*/
provh("97",1).
provh(_,0).
 
/*проверям, является ли второй элемент буквой "z". Так как до этого мы из строки переходили в список, предикат string_to_list все символы перевел в коды ASCII. z = 122.*/
provt("122",1).
provt(_,0).
 
sc([],_).
sc([H|[T|Q]],N):-
    provh(H,N1),
    provt(T,N2),
/* Ниже идет счётчик одновременности выполнения двух условий */
    N is N1+N2,
    sc(Q,N).
Но при проверке azzzza выводит "FALSE", хотя сочетание az в нем имеется.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.11.2018, 22:40
Ответы с готовыми решениями:

Написать программу, выясняющую, есть ли в слове X буква "а", стоящая на нечётном месте после буквы "к"
Написать программу, выясняющую, есть ли в слове X буква "а", стоящая на нечётном месте после буквы "к" вариант на Pascal ...

Написать программу, выясняющую, есть ли в слове X буква "а", стоящая на нечётном месте после буквы "к""
Я нашла похожую на форуме, но переделать под свой вариант не очень получается, не до конца понимаю, как она работает. "Написать...

есть ли в слове X те буква "в", стоящая на нечетном месте
составьте программу позволяющую выяснить, есть ли в слове X те буква "в", стоящая на нечетном месте

4
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
21.11.2018, 23:59
Я ни разу не знаток Пролога, но как-то насторожило:
Prolog
1
2
3
4
5
/*проверям, является ли первый элемент буквой "a". Так как до этого мы из строки переходили в список, предикат string_to_list все символы перевел в коды ASCII. a = 97.*/
provh("97",1).
...
/*проверям, является ли второй элемент буквой "z". Так как до этого мы из строки переходили в список, предикат string_to_list все символы перевел в коды ASCII. z = 122.*/
provt("122",1).
Вы уверены, что здесь нужны кавычки?
0
2 / 2 / 0
Регистрация: 18.04.2017
Сообщений: 14
22.11.2018, 08:53  [ТС]
Не уверен
Но он входит внутрь этой проверки, значит, я думаю, работает.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
22.11.2018, 10:10
Цитата Сообщение от TheBlackBear Посмотреть сообщение
Во-первых я разбил задачу на две части:
1) последовательность za
2) нечетность места, на котором стоит a
Проще как раз одновременно, откусывая сразу по 2 символа, примерно так:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
run :-
    write('Введите строку'),nl,
    read(Sen),
    write('Введенная строка'),nl,
    write(Sen),nl,
    string_to_list(Sen,SenL),
    test(SenL),
    write('YES'),nl;
 
    write('NO'),nl.
 
test([122, 97|_]) :- !.
test([_, _|T]) :- test(T).
0
 Аватар для arlat
798 / 601 / 158
Регистрация: 07.10.2013
Сообщений: 1,330
22.11.2018, 10:15
Лучший ответ Сообщение было отмечено TheBlackBear как решение

Решение

Цитата Сообщение от TheBlackBear Посмотреть сообщение
есть ли слове X буква «а», стоящая на нечетном месте после буквы «z».
Формулировка типа "казнить нельзя помиловать"
Есть ли слове X буква «а», стоящая на нечетном месте, следующая после буквы «z»
Prolog
1
2
3
4
5
6
7
8
odd_a_past_z(W) :-
    string_codes(W, Ws),
    string_codes("z", [Z]),
    string_codes("a", [A]),
    odd_a_past_z(Z, A, Ws).
odd_a_past_z(Z, A, [_, Z, A| _]).
odd_a_past_z(Z, A, [_, _ | T]) :-
    odd_a_past_z(Z, A, T).
Prolog
1
2
?- odd_a_past_z("1234za78").
false.
Prolog
1
2
?- odd_a_past_z("12345za8").
true.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2018, 10:15
Помогаю со студенческими работами здесь

Написать программу, выясняющую, есть ли в слове X буква "а", стоящая на нечётном месте после буквы "к"
Написать программу, выясняющую, есть ли в слове X буква "а", стоящая на нечётном месте после буквы "к"

Напишите программу, выясняющую, есть ли в слове X буква "a", стоящая на нечётном месте после буквы "к"
Напишите программу, выясняющую, есть ли в слове X буква "a", стоящая на нечётном месте после буквы "к".

Выясните, есть ли в слове Х буква "в", стоящая на нечётном месте.
Выясните, есть ли в слове Х буква "в", стоящая на нечётном месте.

Составить программу, в которой определить сколько раз каждая буква, стоящая на четном месте слова Х встречается в слове У
Составить программу, в которой определить сколько раз каждая буква, стоящая на четном месте слова Х встречается в слове У.

Выяснить есть ли в слове Х хотя бы одна буква 'к' или 'м'
Выяснить есть ли в слове Х хотя бы одна буква 'к' или 'м' вроде легкая задача, но она ставит меня в тупик, может кто нибудть поможет?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru