Заполнение строкового массива случайными буквами - Visual Basic .NET
Формулировка задачи:
Всем доброго здоровичка!!! Помогите пожалуйста с задачкой:
VB2008
Есть текстовый массив. Его размер указывается через рэндом от 4 до 7. Этот массив надо заполнить буквами русского алфавита рэндомно (коды от 192 до 223), но чтобы пару-тройку гласных букв (в зависимости от размера массива), остальные согласные. В переменные k1 - колич гласных в массиве, k2 - колич согласных. Спасибо заранее!!!
Решение задачи: «Заполнение строкового массива случайными буквами»
textual
Листинг программы
Module Module1
'ТОЛЬКО ПОД ТЕКУЩИЕ ТРЕБОВАНИЯ
Sub Main()
Dim charsG As String = "аеийоуэюя"
Dim charsS As String = "бвгджзклмнпрстфхцчшщ"
Dim k1, k2 As Integer
Dim rand As New Random()
Dim tmpStr As String
Dim arr(rand.Next(3) + 4) As String
k1 = Math.Ceiling(arr.Length \ 2) ' по логике получается, что приоритет на большее числов элементов имеют согласные из диапазона 4-7
k2 = arr.Length - k1
'последовательно заполняем гласными
For i As Integer = 0 To k1 - 1
Do
tmpStr = charsG(rand.Next(charsG.Length))
Loop While arr.Contains(tmpStr)
arr(i) = tmpStr
Next
'далее последовательно заполняем согласными
For i As Integer = k1 To arr.GetUpperBound(0)
Do
tmpStr = charsS(rand.Next(charsS.Length))
Loop While arr.Contains(tmpStr)
arr(i) = tmpStr
Next
Dim ri As Integer
'перемешиваем массив
For i As Integer = 0 To arr.GetUpperBound(0)
ri = rand.Next(arr.Length)
tmpStr = arr(ri)
arr(ri) = arr(i)
arr(i) = tmpStr
Next
Console.WriteLine("Результат: " & String.Join(String.Empty, arr))
Console.WriteLine("k1: " & k1.ToString)
Console.WriteLine("k2: " & k2.ToString)
Console.ReadLine()
End Sub
End Module