Помогите пожалуйста с массивами
¶Дан массив целых чисел (n не более11, получите n датчиком случайных чисел), заполненный случайным образом числами из промежутка [-30,30].
1. Удалить из него элементы, стоящие между min и max значениями этого массива.
2. Поменять местами третий элемент массива с max значением этого массива.
3. Переставить элементы этого массива по следующему правилу:
1 и 3 элементы, 5 и 7 элементы, 9 и 11 элементы.
тут всё понятно запускаем генератор(А не датчик) случайных чисел
Код:
Dim int_GenRND As Integer = CInt(Int((11 * Rnd()) + 1))
3. Переставить элементы этого массива по следующему правилу:
1 и 3 элементы, 5 и 7 элементы, 9 и 11 элементы.
1 и 3 элементы, 5 и 7 элементы, 9 и 11 элементы.
А если ген выкинет 1 or 2 or 4 ???
P/S
17. Карточка №6. А если - 15. Карточка №1
Код:
Public Class Form2
Private Sub bntStart_Click(sender As Object, e As EventArgs) Handles bntStart.Click
Dim int_MyArray(1) As Integer
Dim int_MemArray(1) As Integer
rtfShow.Text = ""
mySetCol(Color.Red)
rtfShow.SelectedText = "Запускаем генератор случайных чисел." & ControlChars.Cr
Dim int_GenRND As Byte = CInt(Int(8 * Rnd()) + 3)
mySetCol(Color.Blue)
rtfShow.SelectedText = Space(3) & "Генератор выдал число - " & Str(int_GenRND) & ControlChars.Cr
'**********************************************************************
mySetCol(Color.Red)
rtfShow.SelectedText = "Заполнить массив случайным образом числами из промежутка [-30,30]." & ControlChars.Cr
ReDim int_MyArray(int_GenRND)
For i As Byte = 0 To UBound(int_MyArray)
int_MyArray(i) = CInt(Math.Floor((30 - (-30) + 1) * Rnd())) + (-30)
mySetCol(Color.Blue)
rtfShow.SelectedText = Space(3) & "int_MyArray(" & Str(i) & ")" & "=" & Str(int_MyArray(i)) & ControlChars.Cr
Next
'**********************************************************************
mySetCol(Color.Red)
rtfShow.SelectedText = "1.Удалить из него элементы, стоящие между min и max значениями этого массива." & ControlChars.Cr
mySetCol(Color.Green)
rtfShow.SelectedText = Space(7) & "Делаем сортировку массива." & ControlChars.Cr
ReDim int_MemArray(int_GenRND)
For i As Byte = 0 To UBound(int_MyArray)
int_MemArray(i) = int_MyArray(i)
Next
Array.Sort(int_MyArray)
For i As Byte = 0 To UBound(int_MyArray)
mySetCol(Color.Gray)
rtfShow.SelectedText = Space(7) & "int_MyArray(" & Str(i) & ")" & "=" & Str(int_MyArray(i)) & ControlChars.Cr
Next
Dim int_Min, int_Max As Integer
int_Min = int_MyArray(0) : int_Max = int_MyArray(UBound(int_MyArray))
mySetCol(Color.Green)
rtfShow.SelectedText = Space(7) & "Объявить новый массив." & ControlChars.Cr
ReDim int_MyArray(1)
int_MyArray(0) = int_Min : int_MyArray(1) = int_Max
mySetCol(Color.Blue)
rtfShow.SelectedText = Space(3) & "int_MyArray(" & Str(0) & ")" & "=" & _
Str(int_MyArray(0)) & ControlChars.Cr
mySetCol(Color.Blue)
rtfShow.SelectedText = Space(3) & "int_MyArray(" & Str(1) & ")" & "=" & _
Str(int_MyArray(1)) & ControlChars.Cr
'**********************************************************************
mySetCol(Color.Red)
rtfShow.SelectedText = "2.Поменять местами третий элемент массива с max значением этого массива." & ControlChars.Cr
mySetCol(Color.Green)
rtfShow.SelectedText = Space(7) & "Вернуть нальные данные массива до сотировки." & ControlChars.Cr
ReDim int_MyArray(int_GenRND)
For i As Byte = 0 To UBound(int_MyArray)
int_MyArray(i) = int_MemArray(i)
mySetCol(Color.Gray)
rtfShow.SelectedText = Space(7) & "int_MyArray(" & Str(i) & ")" & "=" & Str(int_MyArray(i)) & ControlChars.Cr
Next
Dim bln_OnOff As Boolean = True
Dim bte_memPos As Byte
If int_MyArray(2) <> int_Max Then
For i As Byte = 0 To UBound(int_MyArray)
If int_MyArray(i) = int_Max And bln_OnOff Then
bln_OnOff = False : bte_memPos = i
int_MyArray(i) = int_MyArray(2)
int_MyArray(2) = int_Max
End If
Next
For i As Byte = 0 To UBound(int_MyArray)
Select Case i
Case 2, bte_memPos
mySetCol(Color.Brown)
Case Else
mySetCol(Color.Blue)
End Select
rtfShow.SelectedText = Space(3) & "int_MyArray(" & Str(i) & ")" & "=" & Str(int_MyArray(i)) & ControlChars.Cr
Next
Else
rtfShow.SelectedText = Space(3) & "Третий элемент массива имеет Max значение" & ControlChars.Cr
End If
'**********************************************************************
mySetCol(Color.Red)
rtfShow.SelectedText = "3.Переставить элементы этого массива по следующему правилу:" & ControlChars.Cr
mySetCol(Color.Red)
rtfShow.SelectedText = Space(7) & "1 и 3 элементы, 5 и 7 элементы, 9 и 11 элементы." & ControlChars.Cr
If UBound(int_MyArray) = 10 Then
For i As Byte = 0 To UBound(int_MyArray)
mySetCol(Color.Gray)
rtfShow.SelectedText = Space(7) & "int_MyArray(" & Str(i) & ")" & "=" & Str(int_MyArray(i)) & ControlChars.Cr
Next
For i As Byte = 0 To UBound(int_MyArray)
Select Case i
Case 2
int_Max = int_MyArray(2) : int_MyArray(2) = int_MyArray(0) : int_MyArray(0) = int_Max
Case 6
int_Max = int_MyArray(6) : int_MyArray(6) = int_MyArray(4) : int_MyArray(4) = int_Max
Case 10
int_Max = int_MyArray(10) : int_MyArray(10) = int_MyArray(8) : int_MyArray(8) = int_Max
End Select
Next
For i As Byte = 0 To UBound(int_MyArray)
Select Case i
Case 0, 2, 4, 6, 8, 10
mySetCol(Color.Brown)
Case Else
mySetCol(Color.Blue)
End Select
rtfShow.SelectedText = Space(3) & "int_MyArray(" & Str(i) & ")" & "=" & Str(int_MyArray(i)) & ControlChars.Cr
Next
Else
rtfShow.SelectedText = "Это работает, когда генератор выдаст 10!!! " & ControlChars.Cr
End If
End Sub
Sub mySetCol(ByVal _col As System.Drawing.Color)
rtfShow.SelectionColor = _col
End Sub
End Class
Private Sub bntStart_Click(sender As Object, e As EventArgs) Handles bntStart.Click
Dim int_MyArray(1) As Integer
Dim int_MemArray(1) As Integer
rtfShow.Text = ""
mySetCol(Color.Red)
rtfShow.SelectedText = "Запускаем генератор случайных чисел." & ControlChars.Cr
Dim int_GenRND As Byte = CInt(Int(8 * Rnd()) + 3)
mySetCol(Color.Blue)
rtfShow.SelectedText = Space(3) & "Генератор выдал число - " & Str(int_GenRND) & ControlChars.Cr
'**********************************************************************
mySetCol(Color.Red)
rtfShow.SelectedText = "Заполнить массив случайным образом числами из промежутка [-30,30]." & ControlChars.Cr
ReDim int_MyArray(int_GenRND)
For i As Byte = 0 To UBound(int_MyArray)
int_MyArray(i) = CInt(Math.Floor((30 - (-30) + 1) * Rnd())) + (-30)
mySetCol(Color.Blue)
rtfShow.SelectedText = Space(3) & "int_MyArray(" & Str(i) & ")" & "=" & Str(int_MyArray(i)) & ControlChars.Cr
Next
'**********************************************************************
mySetCol(Color.Red)
rtfShow.SelectedText = "1.Удалить из него элементы, стоящие между min и max значениями этого массива." & ControlChars.Cr
mySetCol(Color.Green)
rtfShow.SelectedText = Space(7) & "Делаем сортировку массива." & ControlChars.Cr
ReDim int_MemArray(int_GenRND)
For i As Byte = 0 To UBound(int_MyArray)
int_MemArray(i) = int_MyArray(i)
Next
Array.Sort(int_MyArray)
For i As Byte = 0 To UBound(int_MyArray)
mySetCol(Color.Gray)
rtfShow.SelectedText = Space(7) & "int_MyArray(" & Str(i) & ")" & "=" & Str(int_MyArray(i)) & ControlChars.Cr
Next
Dim int_Min, int_Max As Integer
int_Min = int_MyArray(0) : int_Max = int_MyArray(UBound(int_MyArray))
mySetCol(Color.Green)
rtfShow.SelectedText = Space(7) & "Объявить новый массив." & ControlChars.Cr
ReDim int_MyArray(1)
int_MyArray(0) = int_Min : int_MyArray(1) = int_Max
mySetCol(Color.Blue)
rtfShow.SelectedText = Space(3) & "int_MyArray(" & Str(0) & ")" & "=" & _
Str(int_MyArray(0)) & ControlChars.Cr
mySetCol(Color.Blue)
rtfShow.SelectedText = Space(3) & "int_MyArray(" & Str(1) & ")" & "=" & _
Str(int_MyArray(1)) & ControlChars.Cr
'**********************************************************************
mySetCol(Color.Red)
rtfShow.SelectedText = "2.Поменять местами третий элемент массива с max значением этого массива." & ControlChars.Cr
mySetCol(Color.Green)
rtfShow.SelectedText = Space(7) & "Вернуть нальные данные массива до сотировки." & ControlChars.Cr
ReDim int_MyArray(int_GenRND)
For i As Byte = 0 To UBound(int_MyArray)
int_MyArray(i) = int_MemArray(i)
mySetCol(Color.Gray)
rtfShow.SelectedText = Space(7) & "int_MyArray(" & Str(i) & ")" & "=" & Str(int_MyArray(i)) & ControlChars.Cr
Next
Dim bln_OnOff As Boolean = True
Dim bte_memPos As Byte
If int_MyArray(2) <> int_Max Then
For i As Byte = 0 To UBound(int_MyArray)
If int_MyArray(i) = int_Max And bln_OnOff Then
bln_OnOff = False : bte_memPos = i
int_MyArray(i) = int_MyArray(2)
int_MyArray(2) = int_Max
End If
Next
For i As Byte = 0 To UBound(int_MyArray)
Select Case i
Case 2, bte_memPos
mySetCol(Color.Brown)
Case Else
mySetCol(Color.Blue)
End Select
rtfShow.SelectedText = Space(3) & "int_MyArray(" & Str(i) & ")" & "=" & Str(int_MyArray(i)) & ControlChars.Cr
Next
Else
rtfShow.SelectedText = Space(3) & "Третий элемент массива имеет Max значение" & ControlChars.Cr
End If
'**********************************************************************
mySetCol(Color.Red)
rtfShow.SelectedText = "3.Переставить элементы этого массива по следующему правилу:" & ControlChars.Cr
mySetCol(Color.Red)
rtfShow.SelectedText = Space(7) & "1 и 3 элементы, 5 и 7 элементы, 9 и 11 элементы." & ControlChars.Cr
If UBound(int_MyArray) = 10 Then
For i As Byte = 0 To UBound(int_MyArray)
mySetCol(Color.Gray)
rtfShow.SelectedText = Space(7) & "int_MyArray(" & Str(i) & ")" & "=" & Str(int_MyArray(i)) & ControlChars.Cr
Next
For i As Byte = 0 To UBound(int_MyArray)
Select Case i
Case 2
int_Max = int_MyArray(2) : int_MyArray(2) = int_MyArray(0) : int_MyArray(0) = int_Max
Case 6
int_Max = int_MyArray(6) : int_MyArray(6) = int_MyArray(4) : int_MyArray(4) = int_Max
Case 10
int_Max = int_MyArray(10) : int_MyArray(10) = int_MyArray(8) : int_MyArray(8) = int_Max
End Select
Next
For i As Byte = 0 To UBound(int_MyArray)
Select Case i
Case 0, 2, 4, 6, 8, 10
mySetCol(Color.Brown)
Case Else
mySetCol(Color.Blue)
End Select
rtfShow.SelectedText = Space(3) & "int_MyArray(" & Str(i) & ")" & "=" & Str(int_MyArray(i)) & ControlChars.Cr
Next
Else
rtfShow.SelectedText = "Это работает, когда генератор выдаст 10!!! " & ControlChars.Cr
End If
End Sub
Sub mySetCol(ByVal _col As System.Drawing.Color)
rtfShow.SelectionColor = _col
End Sub
End Class