Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Помогите, пожалуйста, написать программу!!!! Добавлено: 20.05.04 14:13  

Автор вопроса:  Grommy

Помогите, пожалуйста, написать программу!!!!

Если можно с комментариями.

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

Спасибо.

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #1 Добавлено: 20.05.04 14:20

Обращением это как? User=resu, шалаш=шалаш?

Ответить

Номер ответа: 2
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #2
Добавлено: 20.05.04 15:06

Он имеет ввиду полиндром того слова что ты ввёл ...

то бишь КАЗАК +) напрмиер и тд....

Проще всего проверить слово на полиндромность это:

1) Берём заводим две строковые переменные

2) В одну из них кладём то слова что требует проверки и в другую тоже (назову их А и Б)

3) Теперь бёрём содержимое переменной Б и переписываем её задом на перёд то бишь если в ней было АААББА то будет АББААА

4) Просто сравниваем перемённую А и переменную Б если они ровны то значит слово полиндром а если нет то уж извените...

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

Ответить

Номер ответа: 3
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #3 Добавлено: 20.05.04 15:11

Вот кодик выдранный из другого проекта для разыскивания слов и засовывание их в массив (как разделитель используется естественно пробел). Конечно по=хорошему массивчик надо было бы делать динамическим.. но мне тогда этого не надо было:)

Public gMass(6) As String

Public Sub SearchSpace(sField)

Dim i As Integer

Dim sUse As String

sUse = sField

i = 0

Debug.Print "Это было раньше: " & CStr(sField) & vbCrLf

Do While Len(sUse) <> 0

If InStr(1, sUse, " ") - 1 <> -1 Then

gMass(i) = Left$(sUse, InStr(1, sUse, " ") - 1)

Else

gMass(i) = sUse

Exit Do

'Если вставить

'Exit Sub то увидишь последний элемент, но лучше этого не делать,

'так как автоматом перечеркиваешь все, что у тебя после цикла

End If

sUse = Replace$(sUse, gMass(i) & " ", "", 1)

Debug.Print "gmass " & i & "=" & CStr(gMass(i)) & vbCrLf

i = i + 1

Loop

End Sub

Остальное сам додумай с помощью Fallout'а или с помощью собственного моЗГа..:) Удачи...

Ответить

Номер ответа: 4
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #4
Добавлено: 20.05.04 15:22

Можно таким не очень оригенальным способом...

Dim sInput as String

sInput = "HEREH"

IF (sInput = StrReverse(sInput)) then

'полиндром

Else

'не полиндром

End If

Ответить

Номер ответа: 5
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 20.05.04 15:46

Вот еще один вариант:

Ну рас ответил одному, отвечу и еще одному :), так чтобы не обидно было:

Option Explicit
Option Compare Text

 

Sub main()
Dim Str1 As String, sArray() As String, _
i As Long, j As Long

Str1 = InputBox("Ââåäèòå ïðåäëîæåíèå")
If Len(Str1) = 0 Then Exit Sub

 

sArray = Split(Str1, " ")
For i = 0 To UBound(sArray)
For j = i + vbNull To UBound(sArray)
If sArray(i) = StrReverse(sArray(j)) Then
Call MsgBox("Íó âîò: " & sArray(i) & _
" & " & sArray(j), _
vbInformation)
Exit Sub
End If
Next
Next

Call MsgBox("Íè÷å òàêîãî íå íàéäåíî :(", vbCritical)
End Sub


PS
Сорри за многострочность (за символ "_")... обещал...

Ответить

Номер ответа: 6
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #6
Добавлено: 20.05.04 16:05

Сплит плох тем что если например у человека предложение с точкой .. что собсвенно говоря нормально то будет уже ошибка и если в предложении например больше чем один пробел ... между словами или вначале например пробел ... то тоже будет ошибка в выводе... вот я тут .. написал немного... незнаю не тестил ... тут ВБ нет +) тут и арсер и проверка.... впринцвпи парсер должен быть свободен от выше указанных нидостатков.. жалко в форуме нету что нить типа как на ПШПББшном тегов КОД ... и тд итп с подстветкой синтаксиса например ...

2Админс это бы всех порадовало и коды былиб читабельные ... +) а то всё в одну кучу

Private Sub Main()

Dim sInput as String

Dim dList as String, cVal as String, fWord as String

Dim sLen as Long, ssLen as Long, sdStart as Long

Dim pVal as long, pStrs() as String

dList = " ,/!|."

sInput = " Эх ты казак, Коток тебя переехал."

sInput = Lcase(sInput)

sLen = Len(sInput)

For ssLen = 1 To sLen

cVal = Mid(sInput, ssLen, 1)

sdStart = InStr(dList, cVal)

If (sdStart = 0) Then

fWord = fWord & cVal

ElseIf (sdStart > 0) Then

If (Len(fWord)>0)

pVal = pVal + 1

ReDim Preserve pStrs(pVal-1)

pStrs(pVal-1) = aWord

aWord = fWord

fWord = VbNullString

End If

End If

Next ssLen

For ssLen = 0 to (pVal-1)

If (pStrs(ssLen) = StrReverse(pStrs(ssLen))) Then

'слово полиндром вставь сюда свой

'код который будет сообщать это

'кому нить и как нить +)

End If

Next ssLen

End Sub

Ответить

Номер ответа: 7
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #7
Добавлено: 20.05.04 16:22

П.С: Если код не будет работать +) то принцып я думаю поняли.. хотя вроде ошибок я не делал +)... ну кто его знает вообщем имейте ввиду и не кидайте сразу кирпичами

Ответить

Номер ответа: 8
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #8
Добавлено: 20.05.04 23:42

сплит - дешево и сердито, даже если точка будет или два пробела, то попросту в массиве окажутся строки нулефой длинны... я уже давно ей пользуюсь и никаких подобных замечаний не встречал :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам