Помощь - Поиск - Пользователи - Календарь
Полная версия: слова в тексте задом наперед VB > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
kyzia
Как написать программу, которая записывала бы слова в тексте задом наперед.
Пример:
Исходный:hello, my dear friend!
Результат:olleh, ym raed dneirf!
в чем еще сложность, что разделители должны оставаться на своих местах.
Что посоветуете, какой алгоритм?
В принципе представляю процесс: находит слово до разделителя, переворачивает, вписывает в строку, после разделитель вписывает, затем берется за другое слово. Напечатать слово задом наперед не проблема, а вот чтобы его вытащить и заново редактированное вставить на место никак.
Евгений М.
Попробуйте следующее:
Находим слово (точнее расположение первой и последней букву) и присвиваем значение этого слова к временной переменной.
Далее попробуйте сами догадаться
kyzia
Цитата(Евгений М. @ 13.4.2010, 16:31) *

Попробуйте следующее:
Находим слово (точнее расположение первой и последней букву) и присвиваем значение этого слова к временной переменной.
Далее попробуйте сами догадаться

я не понял это флуд или что? у меня разве другие рассуждения о алгоритме.
может кто нибудь по конкретнее напишет, ну типа блок схемы или код сразу.
Евгений М.
Ну ладно, видимо ваш алгоритм неправильно понял...
Пример: hello, my dear friend!
После нахождения слова "hello" присваеиваем это слово к какой нибудь временной переменной. Переворачиваем это слово. Далее мы должны получить "olleh, my dear friend!"
Т.е. новая строка состоит из символов, которые были до первой буквы, перевернутое слово (которое содержится во временной переменной) и символы, которые находятся после последней буквы переворачиваемого слова в исходном тексте.
kyzia
Цитата(Евгений М. @ 13.4.2010, 16:52) *

Ну ладно, видимо ваш алгоритм неправильно понял...
Пример: hello, my dear friend!
После нахождения слова "hello" присваеиваем это слово к какой нибудь временной переменной. Переворачиваем это слово. Далее мы должны получить "olleh, my dear friend!"
Т.е. новая строка состоит из символов, которые были до первой буквы, перевернутое слово (которое содержится во временной переменной) и символы, которые находятся после последней буквы переворачиваемого слова в исходном тексте.

ну это все понятно, написание кода не получается
Vahappaday
Цитата(kyzia @ 13.4.2010, 12:44) *

я не понял это флуд или что? у меня разве другие рассуждения о алгоритме.
может кто нибудь по конкретнее напишет, ну типа блок схемы или код сразу.



Читаем правила)))
Помощь оказывают только при наличии собственных наработок))
В VB.NET есть уже готовые средства для переворота строк. В VB6... не помню
kyzia
Цитата(Vahappaday @ 13.4.2010, 20:13) *

Читаем правила)))
Помощь оказывают только при наличии собственных наработок))
В 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
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
Цитата(Vahappaday @ 14.4.2010, 1:14) *

Повторю вопрос: это VB6 или уже VB.NET

vb6
почему все так мудрено у вас? я только в начале изучения языка и таких функций не знаю. В моем коде, который выкладывал все просто, простые функции и переменных по минимуму, например Len, Mid, InStr и т.д.
А программку написал я. И обошлось все двумя циклами и одним условием. В одном цикле вырезает слово, в другом переворачивает его, а потом выводит вместе с разделителем.
Vahappaday
хм.... в общем-то замечательно...
у Вас работает если 2 и более разделителей подряд?

У меня на самом деле ничего мудрёного, я лишь предложил написать парочку своих функций.
Просто я писал на VB в школе, а сейчас перешёл на C/C#, до толкового C++ не дошёл, к сожалению, и привык пользоваться функциями.

Впрочем, рад , что у Вас получилось.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.