powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Замена слов в строке
38 сообщений из 38, показаны все 2 страниц
Замена слов в строке
    #36559968
OksanaChery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите решить задачку)))

Ввести текст длиной до 254 символов в виде строки, состоящей из слов. Заменить все слова "всегда" на слово"часто". Использовать функции для работы с данными символьного типа. Выдать сообщение о количестве заменённых слов или об отсутствии заменяемого слова.

Вроде это должно быть так
10 INPUT "Исходная строка : ” ; х$
20 х$ = " " + х$ + " ": у$ = “ всегда ” : z$ = “ часто ”
30 n = INSTR (1, х$, у$)
40 WHILE n < > 0
50 х$ > MID$(x$, 1, n – 1) + z$ + MID(x$, n + LEN(y$), LEN(X$))
60 n = INSTR (1, x$, y$)
70 WEND
80 x$ = MID$ (x$, 2, LEN(X$) - 1)
90 PRINT "Преобразованная строка: “ ; x$
100 END
но программа не работает(((((((
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560056
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда передираете текст у кого-то, нужно хоть немножко осознавать, о чем он.

догадайтесь, чем отличается переменная x$ от переменной х$ ?
догадались?
сдаётесь?
тогда объясню. Переменная x$ - это ИКС (латинская), а переменная х$ - ХА (русская). Объясняю - это РАЗНЫЕ переменные.

Еще есть ошибка в строке 50 - вам там нужно присвоить выражение переменной x$, вместо этого вы ее зачем-то с ним сравниваете. Если понимаете, о чем я - увидите ошибку сами. Если не понимаете, пожалуй вам стоит перечитать конспект или все-таки сходить на лекцию
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560070
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще есть ошибка в строке 50 - вам там нужно присвоить выражение переменной x$, вместо этого вы ее зачем-то с ним сравниваете. Если понимаете, о чем я - увидите ошибку сами. Если не понимаете, пожалуй вам стоит перечитать конспект или все-таки сходить на лекцию Там, в 50-й, ещё вместо знака "минус" (MID$(x$, 1, n 1)) что-то другое поставлено (Asc("–") = 150, для "минуса" эта функция возвращает 45). Т.е., похоже, скопировано откуда-то.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560073
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlthТам, в 50-й, ещё вместо знака "минус" (MID$(x$, 1, n 1)) что-то другое поставлено (Asc("–") = 150, для "минуса" эта функция возвращает 45). Т.е., похоже, скопировано откуда-то.

Там еще кавычки вместо прямых - парные. То есть явно копировали через Ворд с автозаменой кавычек. Надеюсь, у автора хватит ума вычистить такие вещи - эти ошибки компилятор и так покажет без нашего участия.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560085
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProТо есть явно копировали через Ворд...Я уже видел нечто подобное однажды. В том случае автор вопроса признался, что копировал из pdf-файла, размещённого в Инете.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560090
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProТам еще кавычки вместо прямых - парные. То есть явно копировали через Ворд с автозаменой кавычек.
Не факт, что на форум текст попал не через ворд, который покоцал кавычки и поставил "длинное тире". Так что вполне возможно, что у автора именно этих проблем как раз и нет, а есть только те ошибки, на которые я указал.

Что же касается:
OksanaCheryно программа не работает(((((((

Нашел замечательную цитату с башорга
waran
я счас наорал на тетку-юзершу...
waran
я ей дажы пример привел: ты идешь в сортир, и по дороге у тебя ломается нога... ты звонишь админу и кричишь: "!я не могу сходить в сортир"... и админ Х$Й ЗНАЕТ, попчему ты не можешь - либо у тебя дверь не открывается, либо охранник не пускает, либо идешь в другую сторону! вот скажи: не "не могу сходить в сортир", а "у меня нога поломалась" - так админ сразу будет знать, что чинить
waran
причем не уверен, что до нее дошло

Это я к тому, то ли ошибка выдается (какая), то ли результат не соответствует заявленному то ли еще чего....
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560096
OksanaChery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я всё исправила, но выделяется строка 10........что с ней не так?
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560099
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OksanaCheryЯ всё исправила, но выделяется строка 10........что с ней не так?

Ошибка какая?
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560100
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OksanaCheryЯ всё исправила, но выделяется строка 10........что с ней не так?

Код: plaintext
 10  INPUT "Исходная строка : ” ; х$

Кавычку исправили?
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560106
OksanaChery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исправила, выделяет всю строку после INPUT
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560111
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OksanaCheryИсправила, выделяет всю строку после INPUT

Ошибка-то какая?
И вы вообще уверены в правильности синтаксиса команды инпут?
Я-то для проверки логики работы переводил текст на VB, а того, чем вы там пользуетесь (Turbo Basic? Qbasic?) у меня нет, синтаксис проверить не могу.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560126
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OksanaChery, а как там с количеством замен?
А то в этом варианте, без подсчёта замен, проще Replace() использовать.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560131
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub ttt()
Dim x$
x$ = InputBox("Исходная строка : ")
x$ = Replace(x$, " всегда ", " часто ")
Debug.Print "Преобразованная строка: " & x$
End Sub
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560132
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121А то в этом варианте, без подсчёта замен, проще Replace() использовать.

Да и в варианте с подсчетом проще использовать Replace. Количество замен - это разница между длиной исходного и длиной получившейся строки

Просто, насколько я помню,в MSX-бейсике REPLACE просто нет.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560133
OksanaChery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня Visual Basic 6.0 ........ я в информатике полный 0, помогите)))
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560135
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProHugo121А то в этом варианте, без подсчёта замен, проще Replace() использовать.

Количество замен - это разница между длиной исходного и длиной получившейся строки
.

И впрямь... а мне и в голову не пришло... учту!
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560136
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OksanaCheryУ меня Visual Basic 6.0 ........ я в информатике полный 0, помогите)))

а, ну тогда вариант Хуго вам подойдет. Только надо добавить проверку длины.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560139
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Ну верхний вариант тоже работает, всякие операторы работы со строкой... только счётчик добавить.
Я сделал под Экселем, работает. Кучу переменных, кавычек исправил, и заработало.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560142
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121Shocker.Pro,
Ну верхний вариант тоже работает, всякие операторы работы со строкой... только счётчик добавить.
Я сделал под Экселем, работает. Кучу переменных, кавычек исправил, и заработало.

Дерзай. Лично я принципиально не пишу проги за студентов, которым только списать надо, а учиться не собираются.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560150
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не, ну я тоже предпочитаю давать удочку, а не рыбу.
Я синтаксис под ВБА Экселя изменил в 10 и 90 строке, про 50 уже говорили... добавил счётчик в 40 после ":" - и заработало.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560152
OksanaChery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще, информатика не по моей специальности, я на лингвистическом учусь) А вот программный код дал сам преподаватель........... Помогите разобраться, пожалуйста)
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560156
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OksanaCheryПомогите разобраться

Если вопрос ставится так, то пожалуйста.

Программа дана на языке что-то типа MSX-бейсик. Он отличается по синтаксису от Visual Basic. Полагаю, если преподаватель дает программу на MSX-бейсике, то и ответ он хочет получить именно на нем. Так что не пытайтесь тогда заставить ее работать по VB.

Какие есть еще непонятности?
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560159
OksanaChery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но мы работаем именно в VB, по поводу других программ нам не говорили............не знаю что делать(
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560166
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OksanaCheryНо мы работаем именно в VB, по поводу других программ нам не говорили............не знаю что делать(

Тогда я не понял, у вас задача какая?
Перевести программу с одного языка на другой? Найти ошибки в программе преподавателя?
Какой смысл было давать задание и вместе с ним давать решение.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560173
OksanaChery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну......преподавателей не выбирают, какой уж есть...........но программу то мне надо как то сделать........а вот как???
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560182
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OksanaCheryНу......преподавателей не выбирают, какой уж есть...........но программу то мне надо как то сделать........а вот как???

А что вам тогда преподавали? Можете кинуть фотку разворота конспекта?

Программа, которая вам требуется, занимает ровно три строчки. Но если вы не понимаете, что в ней как работает, то и преподаватель поймет, что вы ее списали.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560183
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OksanaChery, так уже подсказали. Верхняя часть, с инпутом, есть в моём коде -это если под Экселем делать, я не знаю, как под VB6. Далее Ваш код, только символы всюду одинаковые поставить и кавычки, и 50 строку исправить. Добавить count = count + 1 если есть замена. И вывод результата, под Экселем я пример дал, или через MsgBox. Всё.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560184
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121Верхняя часть, с инпутом, есть в моём коде -это если под Экселем делать, я не знаю, как под VB6.

Абсолютно так же
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560186
OksanaChery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В конспекте про замену вообще ни слова.........но вот то, что скинул преподаватель......не совпадает местами с прогр-м кодом

Введем с клавиатуры исходную строку (х$). Для удобства работы и повышения массовости алгоритма определим еще две символьные переменные: у $ — замещаемая подстрока, z$ — замещающая подстрока. Слова берем вместе с прилежащими к ним пробелами, иначе будет произведена замена не только отдельных слов, но и заданного набора символов в составе других слов (так «навсегда» превратится в «начасто»). Если подлежащее замене слово окажется в исходной строке первым или последним (с одним пробелом), оно не преобразуется. Чтобы этого не случилось, добавим программно по пробелу в начало и конец исходной строки.
Решение построено на использовании функции INSTR(i,x$,y$) — см. раздел «Встроенные функции для работы с символьными строками». Начиная с позиции i она определяет позицию первого появления подстроки у$ в строке х$; если подстроки в строке не находит, то возвращает результат 0. Определим позицию первого вхождения (п). Можно производить замену. Для этого разрываем исходную строку на 3 части: до искомой подстроки, подстрока, после подстроки. Первую и третью части вычленяем при помощи функции MID$, помещаем между ними замещающее слово, связываем их опе-рацией конкатенации и присваиваем то, что получилось, переменной х$. Так как мы не знаем, сколько раз в строке встретится интересующая нас подстрока, используем цикл WHILE. Условие выполнения цикла: -п <> 0, т.е. наличие в строке интересующих нас подстрок. Перед входом в цикл определим лишь позицию первого вхождения, — чтобы п было определено (здесь удобно было бы использовать и итерационный цикл с посту-словием). На каждой итерации цикла происходит замена одного нужного слова.
Произведя все необходимые замещения, уберем из строки «искусственные» пробе-лы (строка 80) и выведем ее на экран.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560191
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OksanaCheryВ конспекте про замену вообще ни слова.........но вот то, что скинул преподаватель......не совпадает местами с прогр-м кодом

Где не совпадает? Это полное описание того, что вы привели в первом сообщении... За исключением того, что вы пишете "п", совершенно не вникая, что это переменная "n", использованная в тексте программы.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560202
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можете задать преподавателю три каверзных вопроса
1) Почему вы даете нам такую строку для ввода данных
Код: plaintext
 10  INPUT "Исходная строка : ” ; х$
Хотя в справке по синтаксису Visual Basic для ввода строки используется команда
helpInputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

2) Почему вы говорите, что надо отрезать начальный и конечный пробелы, а отрезаете только начальный пробел
Код: plaintext
 80  x$ = MID$ (x$,  2 , LEN(X$) -  1 )
очевидно, что чтобы отрезать ДВА пробела, из длины переменной X$ надо вычитать не 1, а 2

3) Почему вы используете нумерацию строк, хотя Visual Basic это не поддерживает
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560224
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хуго!

Не пойдет твой код

если там заменяемое слово будет написано два раза подряд, то оно не заменится.
Либо размножать пробелы, либо цикл
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560230
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, и впрямь... виден опыт... Тогда так (только конечно момент с начальными пробелами неучтён):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub ttt()
Dim x$
x$ = InputBox("Исходная строка : ")
x$ = Replace(x$, " всегда ", " часто ")
x$ = Replace(x$, " всегда ", " часто ")
Debug.Print "Преобразованная строка: " & x$
End Sub
:)
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560278
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121Shocker.Pro, и впрямь... виден опыт... Тогда так (только конечно момент с начальными пробелами неучтён

о, а я че-то не подумал, что можно тупо два раза подряд Replace, у меня такой вариант получился

Код: plaintext
1.
2.
x$ = Left$(InputBox("Введите строку"),  254 )
y$ = Replace(Replace(" " + Replace(x$, " ", "  ") + " ", " всегда ", " часто "), "  ", " ")
MsgBox "Преобразованная строка: " + Mid$(y$,  2 , Len(y$) -  2 ) + vbCr + "Количество замен: " + CStr(Len(x$) - Len(y$) +  2 )
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560646
OksanaChery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, в твоём коде, если "всегда" будет стоять в начале строки, то не заменится)))))
Помогите лучше изменить мой код, пожалуйста))))))))
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560745
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OksanaCheryShocker.Pro, в твоём коде,
Мы уже на ты?

OksanaCheryесли "всегда" будет стоять в начале строки, то не заменится)))))

Это с какого перепугу? Все меняется, только что проверил еще раз.

OksanaCheryПомогите лучше изменить мой код, пожалуйста))))))))

Да я не против помочь . Но вы ведь не задали ни одного конкретного вопроса, кроме просьбы "сделать задачу". И кстати, я ее сделал и вы, как ни странно, это заметили
...
Рейтинг: 0 / 0
Замена слов в строке
    #36560756
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OksanaCheryПомогите лучше изменить мой код, пожалуйста))))))))

и, кстати,
Код: plaintext
вашего
кода я тоже еще не видел. Пока вы привели только пример кода, который где-то стырил преподаватель, который, судя по всему, тоже не особо его понимает.
...
Рейтинг: 0 / 0
Замена слов в строке
    #36561386
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Альтернативный вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub ttt()
Dim x$, firstlen&, secondlen&
x = InputBox("Исходная строка :")
x = " " & x & " "
firstlen = Len(x)
x = Replace(x, " всегда ", " часто ")
x = Replace(x, " всегда ", " часто ")
secondlen = Len(x)
x = Mid$(x,  2 , Len(x) -  2 )
MsgBox "Преобразованная строка: " & x & _
Chr( 10 ) & "Количество замен:  " & firstlen - secondlen
End Sub
по-моему, выглядит покрасивее преподавательского... но меньше работы со строкой - под задачу не подходит... хотя результат идентичен.
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Замена слов в строке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]