![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 17.11.2015
Сообщений: 62
|
![]()
Добрый день,
Условие: Слова-перевертыши Словом назовем набор символов без пробелов. Текст содержит набор слов, разделенных пробелами (одним или несколькими). Других знаков препинания в тексте нет. Все символы текста строчные буквы английского алфавита. Необходимо найти и вывести слова-перевертыши (читаются одинаково слева-направо и справа-налево) максимальной длины. Если «перевертышей» максимальной длины несколько, то вывести их все в порядке следования в предложении. Повторяющиеся слова выводятся один раз. Если таких слов нет, то вывести сообщение «no». Входные данные: В единственной строке входного файла input.txt записаны символы. Строка состоит не более, чем из 250 символов. Выходные данные: В файл output.txt нужно вывести слова-перевертыши. Если «перевертышей» максимальной длины несколько, то вывести их все в порядке следования в предложении, разделив пробелом. Повторяющиеся слова выводятся один раз. Если таких слов нет, то вывести сообщение «no». Примеры: № input.txt 1 tot sos aaatrr 2 ttot sto aaatrr 3 tt diк tt tt rrra № output.txt 1 tot sos 2 no 3 tt Уже 2 день сижу над этой задачей. Но ничего путного не выходит. Нужна помощь в поиске рационального и компактного алгоритма. Больше всего трудностей вызывает у меня поиск правильного алгоритма для отсеивания повторяющихся слов в строке, а так же определения max длины слова перевертыша в строке. Мой код программы: Код:
Код:
Жду помощи ![]() Последний раз редактировалось artems67; 27.11.2016 в 13:48. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
По поводу ошибки поищи, где лишний ; поставил в коде.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 17.11.2015
Сообщений: 62
|
![]()
Спасибо. Нашёл лишний ' ; ' после комментария. Теперь код компилируется, но при запуске программы выводит следующее сообщение:
![]() Я так понял ошибка на 27 строке кода ? 27 строка кода: Код:
Не понимаю. Всё тут просто тупик. Начинаю костыли пихать, всё либо ещё хуже либо пустой файл output.txt получаю. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А чего ему не выйти? Цикл по j, а индекс с чего-то i
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 17.11.2015
Сообщений: 62
|
![]()
Аватар, да вы правы, исправил эту нелепость.
Теперь все работает хорошо, за исключением того, что если первым набором символов до пробела окажется слово-перевертыш, то оно будет изначально записываться в файл output.txt, так как строка s2 будет являться пустой а значит length(s1) > length(s2). А надо мне сделать так, чтобы, получается, в строке s2 хранился самый длинный набор символов из исходной строки s, причем этот набор символов должен являть собой слово-перевертыш. ![]() ![]() Последний раз редактировалось artems67; 27.11.2016 в 14:14. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Ну сфокусируйся на той строчке, уже и написал что не так. Ошибка того же рода, как и лишняя точка с запятой. Внимательней нужно быть, не думать о девицах в процессе программирования
![]()
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 17.11.2015
Сообщений: 62
|
![]()
Its alive ! its alive !
Чуть доработал код, вставив отдельный цикл для нахождения слова перевертыша-макс длины. Переменной х присвоил length макс. слова-перевертыша. Далее в основном цикле просто через условие сравнивал длины символов до пробела с x . Я понимаю, что поиск max length и наверное основной цикл можно оптимизировать, разгрузив его подпрограммами, может попытаюсь сделать это чуть позже. Дам голове остыть. Если кому интересен ниже мой "франкинштейн", в назидание как не стоит уродовать свой код громоздкими конструкциями циклов и операторов выбора. Уродливый, но рабочий код. Код:
|
![]() |
![]() |
![]() |
#8 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
![]()
На досуге посмотри еще такой вариант
![]() Код:
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 17.11.2015
Сообщений: 62
|
![]()
Aleksandr H.,
Ошибка при запуске вашего кода: Индекс находился вне границ массива строка 45 |
![]() |
![]() |
![]() |
#10 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
![]()
Может быть. А на каких входных?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужна помощь в решении задачи | MarcusAurelius | Помощь студентам | 10 | 14.09.2015 19:47 |
нужна помощь в решении задачи! | Elusive Devil | Помощь студентам | 2 | 22.03.2009 16:17 |
Нужна помощь в решении задачек, тема "Циклы с переменным количеством шагов" | DJ Kost | Помощь студентам | 3 | 16.01.2009 13:26 |
Очень нужна помощь по Turbo Pascal...Не могу составить програму,по теме:"Процедуры и файлы"...( | Zara | Помощь студентам | 2 | 02.12.2008 18:23 |