Поиск слова заданной длины - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Возникает исключение на 31 строке, как его исправить, и в целом?
Листинг программы
  1. ''Поиск слова заданной длины
  2. ''
  3. Imports System.Console
  4. Module Module1
  5. Sub Main()
  6. Title = "Поиск слов"
  7. Dim flag As Boolean = False,
  8. n As Integer = CInt(InputBox("Введите длину слова")),
  9. a As String() = input("Введите строки слов, ввод завершается пустой строкой"),
  10. x As Integer()() = cycle(flag, a, n)
  11. MsgBox(outform(x, n, flag))
  12. ReadKey()
  13. End Sub
  14. Function input(p As String) As String()
  15. Dim q As String = InputBox(p),
  16. a As String() = New String(0) {},
  17. t As Integer = 0
  18. While q.Length <> 0
  19. ReDim Preserve a(a.Length + 1)
  20. a(t) = q
  21. q = InputBox("Ввести очередную строку")
  22. t += 1
  23. End While
  24. Return a
  25. End Function
  26. Function outform(x As Integer()(), n As Integer, flag As Boolean)
  27. Dim p As String = ""
  28. If flag Then
  29. For u As Integer = 0 To x.Length - 1
  30. p += String.Format("Строка №{0}, индекс от {1} до {2}\n", x(u)(0), x(u)(1) - n + 1, x(u)(1))
  31. Next
  32. Else : p = "нет слов заданной длины"
  33. End If
  34. Return p
  35. End Function
  36. Function cycle(ByRef flag As Boolean, a As String(), n As Integer) As Integer()()
  37. Dim per As Integer = 0,
  38. x As Integer()() = New Integer(0)() {}
  39. For t As Integer = 0 To a.Length - 1
  40. For m As Integer = 0 To Len(a(t)) - 1
  41. per += 1
  42. If a(t)(m) = "," Then
  43. If per = n Then
  44. ReDim Preserve x(x.Length + 1)
  45. x(x.GetUpperBound(0)) = {t, m - 1}
  46. flag = True
  47. End If
  48. per = 0
  49. End If
  50. If m = Len(a(t)) - 1 And per = n Then
  51. ReDim Preserve x(x.Length + 1)
  52. x(x.GetUpperBound(0)) = {t, m}
  53. flag = True
  54. End If
  55. Next
  56. per = 0
  57. Next
  58. Return x
  59. End Function
  60. End Module

Решение задачи: «Поиск слова заданной длины»

textual
Листинг программы
  1. Sub Main()
  2.     Title = "Поиск слов"
  3.     Dim flag As Boolean = False
  4.     Dim n As Integer = CInt(InputBox("Введите длину слова"))
  5.     Dim a As String() = inputStrings("Введите слова, ввод завершается пустой строкой")
  6.     Dim s As String = ""
  7.     If a.Length > 0 Then
  8.         For i = 0 To a.Length - 1
  9.             Dim b() As String = a(i).Split(","c)
  10.             Dim ss As String = outform(b, n)
  11.             If ss.Length > 0 Then s &= "строка " & i.ToString & ": " & ss & vbCrLf
  12.         Next
  13.         If s.Length = 0 Then s = "нет слов заданной длины"
  14.     Else
  15.         s = "нет списка слов"
  16.     End If
  17.     MsgBox(s)
  18.     ReadKey()
  19. End Sub
  20. Function inputStrings(ByVal p As String) As String()
  21.     Dim q As String = InputBox(p)
  22.     Dim a() As String = {}
  23.     Dim t As Integer = 0
  24.     While q.Length <> 0
  25.         ReDim Preserve a(t)
  26.         a(t) = q
  27.         q = InputBox("Ввести очередную строку")
  28.         t += 1
  29.     End While
  30.     Return a
  31. End Function
  32. Function outform(ByVal aa() As String, ByVal n As Integer) As String
  33.     Dim p As String = ""
  34.     For i = 0 To aa.Length - 1
  35.         If aa(i).Length = n Then
  36.             p &= aa(i) & " (" & i.ToString & "), "
  37.         End If
  38.     Next
  39.     Return p.TrimEnd(",", " ")
  40. End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут