BN
Blondinko Net

Миленькие, помогите, все мозги сломала. Ну как написать эту программу?

Нужно вывести на экран третье слова, начинающееся на "а" из введенного предложения.

Я какую-то куйню написала, сначала прога выдает, что нет таких слов, а потом выдает, что есть, но не то, которое есть на самом деле. Потом нажимаю "ок", а прога зацикливается, постоянно прибавляя в слову еще одну "а". Что там нужно написать? моя байда вот:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim stroka As Object

stroka = TextBox1.Text

stroka = " " + stroka

Dim slovo As String

slovo = "а"

Dim a As String

a = "а"

Dim aLen As Long

aLen = Len(a)

Dim b As Integer

Dim c As String

Dim f As String

Dim d As Integer

b = InStr(1, stroka, a, vbTextCompare)

Do While b > 0

c = Mid(stroka, b - 1, 1)

If c = " " Or c = "," Or c = "." Or c = ":" Or c = ";" Or c = "!" Or c = "?" Then d = d + 1

b = InStr(b + aLen, stroka, a, vbTextCompare)

Loop

If d < 3 Then MsgBox("Такого слова нет! ")Else

b = InStr(1, stroka, a, vbTextCompare)

Do While b > 0 And d < 4

c = Mid(stroka, b - 1, 1)

f = Mid(stroka, b + aLen, 1)

If c = " " Or c = "," Or c = "." Or c = ":" Or c = ";" Or c = "!" Or c = "?" Then d = d + 1

b = InStr(b + aLen, stroka, a, vbTextCompare)

Do While f = "а" Or f = "б" Or f = "в" Or f = "г" Or f = "д" Or f = "е" Or f = "ё" Or f = "ж" Or f = "з" Or f = "и" Or f = "й" Or f = "к" Or f = "л" Or f = "м" Or f = "н" Or f = "о" Or f = "п" Or f = "р" Or f = "т" Or f = "у" Or f = "ф" Or f = "х" or f="ц" or f="ш" or f="щ" or f="ъ" or f="ы" or f="ь" or f="э" or f="ю" or f="я" or f="ч" slovo = slovo & f

b = InStr(b + aLen + aLen, stroka, a, vbTextCompare)

Loop

Loop

MsgBox(slovo)

End Sub

Это вижуал студио (бейсик) 2005

АК
Алексей Карпов

Берем массив, для слов, и счетчик:
Dim wpos(1000,2)
wcount=0
Берем строку разделителей:
sep=" ,.:;!?"
Просматриваем строку, пишем в массив позиции 1-го и последнего символов слов:
i=1
do while i<=Len(stroka)
do while (i<=Len(stroka)) and InStr(sep,Mid(stroka,i,1)
i=i+1
loop
if i<=Len(stroka) then
wpos(wcount,0)=i
do while (i<=Len(stroka)) and (not InStr(sep,Mid(stroka,i,1))
i=i+1
loop
wpos(wcount,1)=i
wcount=wcount+1
end if
loop
Имеем список слов: нач. и конечную позиции. Дальше смотрим слова:
slovo=""
i=0
n=0
do while i if Mid(stroka,wpos(i,0),1)="a" then
n=n+1
if n=3 then
slovo=Mid(stroka,wpos(i,0),wpos(i,1)-wpos(i,0))
exit do
end if
end if
i=i+1
loop

if slovo="" then
MsgBox("Такого слова нет! ")
else
MsgBox(slovo)
end if

ИМХО так, но ОЧЕНЬ давно не писала в VB, уже плохо помню. Можно сделать в одном цикле, но так проще разобраццо, и отладить.

Похожие вопросы
Помогите написать программу. С++
Помогите написать программу!
Помогите с написать программу на с++
помогите написать программу в с++
Помогите написать программу в С++.
Помогите не сломать мозг...
Помогите написать программу на С
Помогите написать программу. С++ .
Помогите написать программу на С++.
Все мозги сломал помогите