Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452

Получить строку, слова в которой расположены в обратном порядке

28.03.2010, 18:17. Показов 5348. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача получить строку, слова в которой расположены в обратном порядке
Prolog
1
2
3
4
5
6
7
8
predicates
 
  переворот(string,string).
  goal
  readln(str), переворот(string," ").
  clauses 
  переворот(" ", New):-write(New).
 переворот(str,new):-fronttoken(str,w,ost),fronttoken(newt,w,new),!, переворот(ost,newt).
ругается
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.03.2010, 18:17
Ответы с готовыми решениями:

Сформировать строку, в которой слова расположены в обратном порядке
Дана строка, состоящая из слов, разделенных пробелами. Сформировать строку, в которой слова расположены в обратном порядке. В полученной ...

Сформировать новую строку, в которой слова исходной будут следовать в обратном порядке
Нужна срочно ваша помощь...Не могу написать код для следующей задачи: "Задан текст, состоящий из слов, записанных через запятые и/или...

Из Pascal в C++ (Сформировать новую строку, в которой слова будут следовать в обратном порядке)
Сформировать новую строку, в которой слова будут следовать в обратном порядке. Найти первое цифровое слово и заменить его обратным...

22
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
28.03.2010, 18:48
Имена переменных должны быть с большой буквы.
1
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
28.03.2010, 18:57  [ТС]
заработало, но результат не выводит
Prolog
1
2
3
4
5
6
7
predicates
   переворот(string,string).
  clauses 
  переворот(" ", New):-write(New).
 переворот(Str,New):-fronttoken(Str,W,Ost),fronttoken(Newt,W,New),!, переворот(Ost,Newt).
   goal
  readln(Str), переворот(string," "), write(Str).
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
28.03.2010, 18:59
Ну а что это такое переворот(string," ")?
0
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
28.03.2010, 19:28  [ТС]
Попробовал что-то передать туда, эффекта 0
получаю No Solution
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
28.03.2010, 19:42
fronttoken использовать второй раз неправильно, ведь надо слово в конец новой строки присоединить. Подходящего встроенного предиката не знаю, поэтому сделала вывод в самом предикате.
Prolog
1
2
3
4
5
6
7
predicates
   perevorot(string).
  clauses 
  perevorot("").
 perevorot(Str):-fronttoken(Str,W,Ost),perevorot(Ost),write(W," ").
   goal
  readln(Str), perevorot(Str),nl.
1
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
28.03.2010, 19:58  [ТС]
По пробовал вести строку a1 a2 a3, все равно No Solution
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
28.03.2010, 20:04
А вот что у меня:
Prolog
1
2
3
4
a1 a2 a3
a3 a2 a1 
Str=a1 a2 a3
1 Solution
Так что не знаю что у Вас не работает.
0
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
28.03.2010, 20:11  [ТС]
Странно, в чем запускайте?
Можете приложить файл проекта?
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
28.03.2010, 20:15
Запускаю в visual prolog 5.2
Проект тут http://slil.ru/28868980
1
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
28.03.2010, 20:43  [ТС]
Глюу біл из-за пробельного символа после а3 )
следующий этап: нужно удалить все слова под четными номерами
в какую сторону думать?
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
28.03.2010, 21:00
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
predicates
perevorot(string,integer).
write_word(string,integer).
 
clauses
write_word(W,N):-N mod 2=1,!,write(W," ").
write_word(_,_).
  
perevorot("",1).
perevorot(Str,N):-fronttoken(Str,W,Ost),perevorot(Ost,M), N=M+1,write_word(W,M).
 
goal
readln(Str), perevorot(Str,_),nl.
1
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
28.03.2010, 21:40  [ТС]
еще последнее осталось
все слова нужно записать наоборот
те слово = оволс
думал поиграться с рекурсией но из-за вывода в предекате не очень получилось
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
predicates
perevorot(string,integer).
write_word(string,integer).
 
clauses
write_word(W,N):-N mod 2=1,!,write(W," ").
write_word(_,_).
  
perevorot("",1).
perevorot(Str,N):-fronttoken(Str,W,Ost),perevorot(Ost,M), N=M+1,frontchar(Str, W, Ost),  Ost = "", newString(Str1), str_char(Str2, W), concat(Str1, Str2, Str), assertz(newString(Str)), write_word(W,M).
 
goal
readln(Str), perevorot(Str,_),nl.
что я пропустил?
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
28.03.2010, 21:46
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
predicates
perevorot(string,integer).
write_word(string,integer).
perevorot_slova(string).
 
clauses
perevorot_slova("").
perevorot_slova(S):-frontchar(S,C,Ost),perevorot_slova(Ost),write(C).
 
write_word(W,N):-N mod 2=1,!,perevorot_slova(W),write(" ").
write_word(_,_).
  
perevorot("",1).
perevorot(Str,N):-fronttoken(Str,W,Ost),perevorot(Ost,M), N=M+1,write_word(W,M).
 
goal
readln(Str), perevorot(Str,_),nl.
1
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
31.03.2010, 16:01  [ТС]
В этой же задаче нужно сделать один из переворотов методом восходящей рекурсии
За основу я взял пример
Prolog
1
2
3
4
5
6
7
8
9
10
11
Найти кол-во слов с первой буквой а.
predicates
 
кол_слов(string,integer,integer) 
clauses
кол_слов("",N,N).
кол_слов(S,N,R):-fronttoken(S,W,S_ost), frontchar(W,'a',_), N1=N+1,!,    
                        кол_слов(S_ost,N1,R);
              fronttoken(S,_,S_ost),кол_слов(S_ost,N,R).
goal
  readln(S), кол_слов(S,0,Res), write(Res).
у себя написал следующее
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
predicates
perevorot(string,integer,integer).
 
perevorot_slova(string).
 
clauses
perevorot_slova("").
perevorot_slova(S):-frontchar(S,C,Ost),perevorot_slova(Ost),write(C).
  
perevorot("",1,1).
perevorot(Str,M,R):-fronttoken(Str,W,Ost),perevorot(Ost,M,1), N=M+1,!,perevorot(Str,N,R),write(W,M).
 
goal
readln(Str), perevorot(Str,_,Res),write(Res),nl.
Не работает, почему?

Добавлено через 1 час 14 минут
Поправка, скопировал не тот код
вот то что я имел виду
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
predicates
perevorot(string,integer,integer).
 
perevorot_slova(string).
 
clauses
perevorot_slova("").
perevorot_slova(S):-frontchar(S,C,Ost),perevorot_slova(Ost),write(C).
  
perevorot("",1,1).
perevorot(Str,N,R):-fronttoken(Str,W,Ost),perevorot(Ost,M,1), N=M+1,!,perevorot(Str,N,R);
 fronttoken(Str,_,Ost),perevorot(Ost,N,R).
goal
readln(Str), perevorot(Str,_,Res),write(Res),nl.
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
31.03.2010, 21:22
Три параметра там точно не нужно, нам же длину знать не надо. Если хотите счетчик снизу вверх вести, то так:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
predicates
perevorot(string,integer).
write_word(string,integer).
perevorot_slova(string).
 
clauses
perevorot_slova("").
perevorot_slova(S):-frontchar(S,C,Ost),perevorot_slova(Ost),write(C).
 
write_word(W,N):-N mod 2=1,!,perevorot_slova(W),write(" ").
write_word(_,_).
  
perevorot("",_).
perevorot(Str,I):-fronttoken(Str,W,Ost),I1=I+1,perevorot(Ost,I1),write_word(W,I).
 
goal
readln(Str), perevorot(Str,1),nl.
0
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
01.04.2010, 19:21  [ТС]
разве при восходящей рекурсии
можно что-либо писать после условия?

perevorot_slova(Ost),write(C).
строка должна выглядеть как-то так
perevorot_slova(Ost,Res).
.....
goal .... write(Res)

Добавлено через 5 часов 14 минут
Prolog
1
2
3
perevorot("",_).
perevorot(Str,I):-fronttoken(Str,W,Ost),I1=I+1,!,perevorot(Ost,I1);
       fronttoken(Str,_,Ost),perevorot(Str,I).
я думаю что написть нужно как-то так.
зы при этом коде прога запускается, но уходит в бесконечный цикл
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
01.04.2010, 19:26
Я честно говоря не очень понимаю что Вам не нравиться, а зацикливается потому что Вы в perevorot(Str,I) вызываете perevorot(Str,I).
0
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
01.04.2010, 19:52  [ТС]
не нравится то что это не совсем восходящая рекурсия
0
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
01.04.2010, 19:55
В первом варианте индекс уменьшался, во втором увеличивается... если не то, ни то не восходящая, то что же восходящая?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.04.2010, 19:55
Помогаю со студенческими работами здесь

Реализовать функцию, создающую новую строку, в которой все слова из исходной строки следуют в обратном порядке
Задание: Дана строка, содержащая текст на естественном языке. Напишите функцию, создающую новую строку, в которой все слова из старой...

Строка: Из исходной строки создать новую, у которой символы расположены в обратном порядке
Ввести с помощью клавиатуры строку произвольной длины. Из исходной строки создать новую, у которой символы расположены в обратном порядке....

Cделать строку, в которой символы расположены в порядке возрастания их кодов
Доброго времени суток! Друзья, помогите с написанием программы для к.р. . Моих знаний не достаточно(. Дана строка символов. Нужно...

Рекурсия: получить число, цифры в котором будут расположены в обратном порядке
Нужно получить с помощью рекурсивной функции число, символы в котором будут расположены в обратном порядке. Например 123 получим 321. Вот...

Вернуть строку, n символов которой размещены в обратном порядке
Вот написал прогу с строкой и указателем. Она должна возврощать строку н символов которой розмещены в обратном порядке ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru