![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
kyzia |
![]()
Сообщение
#1
|
Школьник ![]() Группа: Продвинутые Сообщений: 27 Регистрация: 6.4.2010 Город: москва Учебное заведение: мгу ![]() |
Как написать программу, которая записывала бы слова в тексте задом наперед.
Пример: Исходный:hello, my dear friend! Результат:olleh, ym raed dneirf! в чем еще сложность, что разделители должны оставаться на своих местах. Что посоветуете, какой алгоритм? В принципе представляю процесс: находит слово до разделителя, переворачивает, вписывает в строку, после разделитель вписывает, затем берется за другое слово. Напечатать слово задом наперед не проблема, а вот чтобы его вытащить и заново редактированное вставить на место никак. |
![]() ![]() |
Евгений М. |
![]()
Сообщение
#2
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 199 Регистрация: 6.11.2009 Город: Уфа Вы: студент ![]() |
Попробуйте следующее:
Находим слово (точнее расположение первой и последней букву) и присвиваем значение этого слова к временной переменной. Далее попробуйте сами догадаться |
kyzia |
![]()
Сообщение
#3
|
Школьник ![]() Группа: Продвинутые Сообщений: 27 Регистрация: 6.4.2010 Город: москва Учебное заведение: мгу ![]() |
Попробуйте следующее: Находим слово (точнее расположение первой и последней букву) и присвиваем значение этого слова к временной переменной. Далее попробуйте сами догадаться я не понял это флуд или что? у меня разве другие рассуждения о алгоритме. может кто нибудь по конкретнее напишет, ну типа блок схемы или код сразу. |
Евгений М. |
![]()
Сообщение
#4
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 199 Регистрация: 6.11.2009 Город: Уфа Вы: студент ![]() |
Ну ладно, видимо ваш алгоритм неправильно понял...
Пример: hello, my dear friend! После нахождения слова "hello" присваеиваем это слово к какой нибудь временной переменной. Переворачиваем это слово. Далее мы должны получить "olleh, my dear friend!" Т.е. новая строка состоит из символов, которые были до первой буквы, перевернутое слово (которое содержится во временной переменной) и символы, которые находятся после последней буквы переворачиваемого слова в исходном тексте. |
kyzia |
![]()
Сообщение
#5
|
Школьник ![]() Группа: Продвинутые Сообщений: 27 Регистрация: 6.4.2010 Город: москва Учебное заведение: мгу ![]() |
Ну ладно, видимо ваш алгоритм неправильно понял... Пример: hello, my dear friend! После нахождения слова "hello" присваеиваем это слово к какой нибудь временной переменной. Переворачиваем это слово. Далее мы должны получить "olleh, my dear friend!" Т.е. новая строка состоит из символов, которые были до первой буквы, перевернутое слово (которое содержится во временной переменной) и символы, которые находятся после последней буквы переворачиваемого слова в исходном тексте. ну это все понятно, написание кода не получается |
Vahappaday |
![]()
Сообщение
#6
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
я не понял это флуд или что? у меня разве другие рассуждения о алгоритме. может кто нибудь по конкретнее напишет, ну типа блок схемы или код сразу. Читаем правила))) Помощь оказывают только при наличии собственных наработок)) В VB.NET есть уже готовые средства для переворота строк. В VB6... не помню |
kyzia |
![]()
Сообщение
#7
|
Школьник ![]() Группа: Продвинутые Сообщений: 27 Регистрация: 6.4.2010 Город: москва Учебное заведение: мгу ![]() |
Читаем правила))) Помощь оказывают только при наличии собственных наработок)) В VB.NET есть уже готовые средства для переворота строк. В VB6... не помню да нет проблем=) вот просто переворачивает слово Исходный код Private Sub cmd1_Click() Dim a As String, t As String, s As String t = txt1.Text s = "" For i = Len(t) To 1 Step -1 a = Mid(t, i, 1) s = s & a Next i txt1.Text = s End Sub ну вначале можно переменную с разделителями задать s = "`1234567890-=[]\';/.~!@#$%^&*()_+{}|?><-;:""«»," потом с помощью instr поискать в тексте разделитель...... ну вообщем у меня бред какой то получался |
Vahappaday |
![]()
Сообщение
#8
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
1. Реализовать функцию Reverse (у Вас уже получилось)) Осталось вынести в функцию)
2. Реализовать функцию IsSplitSymbol(a as String) as Boolean - проверяет, является ли строка разделителем. 3. Завести две Integer переменных - одна хранит начало текущего слова, другая его длину: Dim myStart, myLen as Integer Пробегаем по строчке слева направо: Если текущий символ - разделитель: Дописываем к рез. строке Reverse(Mid(t,myStart, myLen)) Дописываем символ к результирующей строке myLen=0 myStart = i+1 Если текущий символ - не разделитель myLen=myLen+1 Повторю вопрос: это VB6 или уже VB.NET |
kyzia |
![]()
Сообщение
#9
|
Школьник ![]() Группа: Продвинутые Сообщений: 27 Регистрация: 6.4.2010 Город: москва Учебное заведение: мгу ![]() |
Повторю вопрос: это VB6 или уже VB.NET vb6 почему все так мудрено у вас? я только в начале изучения языка и таких функций не знаю. В моем коде, который выкладывал все просто, простые функции и переменных по минимуму, например Len, Mid, InStr и т.д. А программку написал я. И обошлось все двумя циклами и одним условием. В одном цикле вырезает слово, в другом переворачивает его, а потом выводит вместе с разделителем. |
Vahappaday |
![]()
Сообщение
#10
|
Аспирант ![]() ![]() ![]() Группа: Продвинутые Сообщений: 334 Регистрация: 26.4.2009 Город: Липецк Учебное заведение: ЛГТУ Вы: студент ![]() |
хм.... в общем-то замечательно...
у Вас работает если 2 и более разделителей подряд? У меня на самом деле ничего мудрёного, я лишь предложил написать парочку своих функций. Просто я писал на VB в школе, а сейчас перешёл на C/C#, до толкового C++ не дошёл, к сожалению, и привык пользоваться функциями. Впрочем, рад , что у Вас получилось. |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 21:44 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru