Поиск слова заданной длины - Visual Basic .NET
Формулировка задачи:
Возникает исключение на 31 строке, как его исправить, и в целом?
Листинг программы
- ''Поиск слова заданной длины
- ''
- Imports System.Console
- Module Module1
- Sub Main()
- Title = "Поиск слов"
- Dim flag As Boolean = False,
- n As Integer = CInt(InputBox("Введите длину слова")),
- a As String() = input("Введите строки слов, ввод завершается пустой строкой"),
- x As Integer()() = cycle(flag, a, n)
- MsgBox(outform(x, n, flag))
- ReadKey()
- End Sub
- Function input(p As String) As String()
- Dim q As String = InputBox(p),
- a As String() = New String(0) {},
- t As Integer = 0
- While q.Length <> 0
- ReDim Preserve a(a.Length + 1)
- a(t) = q
- q = InputBox("Ввести очередную строку")
- t += 1
- End While
- Return a
- End Function
- Function outform(x As Integer()(), n As Integer, flag As Boolean)
- Dim p As String = ""
- If flag Then
- For u As Integer = 0 To x.Length - 1
- p += String.Format("Строка №{0}, индекс от {1} до {2}\n", x(u)(0), x(u)(1) - n + 1, x(u)(1))
- Next
- Else : p = "нет слов заданной длины"
- End If
- Return p
- End Function
- Function cycle(ByRef flag As Boolean, a As String(), n As Integer) As Integer()()
- Dim per As Integer = 0,
- x As Integer()() = New Integer(0)() {}
- For t As Integer = 0 To a.Length - 1
- For m As Integer = 0 To Len(a(t)) - 1
- per += 1
- If a(t)(m) = "," Then
- If per = n Then
- ReDim Preserve x(x.Length + 1)
- x(x.GetUpperBound(0)) = {t, m - 1}
- flag = True
- End If
- per = 0
- End If
- If m = Len(a(t)) - 1 And per = n Then
- ReDim Preserve x(x.Length + 1)
- x(x.GetUpperBound(0)) = {t, m}
- flag = True
- End If
- Next
- per = 0
- Next
- Return x
- End Function
- End Module
Решение задачи: «Поиск слова заданной длины»
textual
Листинг программы
- Sub Main()
- Title = "Поиск слов"
- Dim flag As Boolean = False
- Dim n As Integer = CInt(InputBox("Введите длину слова"))
- Dim a As String() = inputStrings("Введите слова, ввод завершается пустой строкой")
- Dim s As String = ""
- If a.Length > 0 Then
- For i = 0 To a.Length - 1
- Dim b() As String = a(i).Split(","c)
- Dim ss As String = outform(b, n)
- If ss.Length > 0 Then s &= "строка " & i.ToString & ": " & ss & vbCrLf
- Next
- If s.Length = 0 Then s = "нет слов заданной длины"
- Else
- s = "нет списка слов"
- End If
- MsgBox(s)
- ReadKey()
- End Sub
- Function inputStrings(ByVal p As String) As String()
- Dim q As String = InputBox(p)
- Dim a() As String = {}
- Dim t As Integer = 0
- While q.Length <> 0
- ReDim Preserve a(t)
- a(t) = q
- q = InputBox("Ввести очередную строку")
- t += 1
- End While
- Return a
- End Function
- Function outform(ByVal aa() As String, ByVal n As Integer) As String
- Dim p As String = ""
- For i = 0 To aa.Length - 1
- If aa(i).Length = n Then
- p &= aa(i) & " (" & i.ToString & "), "
- End If
- Next
- Return p.TrimEnd(",", " ")
- End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д