Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите пожалуйста с массивами

82K
14 ноября 2014 года
ALEXBBB
9 / / 14.11.2014
17. Карточка №6.Массив для каждой задачи берется первоначальный. Используйте динамический массив.
¶Дан массив целых чисел (n не более11, получите n датчиком случайных чисел), заполненный случайным образом числами из промежутка [-30,30].
1. Удалить из него элементы, стоящие между min и max значениями этого массива.
2. Поменять местами третий элемент массива с max значением этого массива.
3. Переставить элементы этого массива по следующему правилу:
1 и 3 элементы, 5 и 7 элементы, 9 и 11 элементы.
327
15 ноября 2014 года
UserNet2008
748 / / 03.04.2010
Тут есть одна кухня, в виде не стыковки вот:
Цитата:
Дан массив целых чисел (n не более11, получите n датчиком случайных чисел)


тут всё понятно запускаем генератор(А не датчик) случайных чисел

 
Код:
Dim int_GenRND As Integer = CInt(Int((11 * Rnd()) + 1))
Цитата:
3. Переставить элементы этого массива по следующему правилу:
1 и 3 элементы, 5 и 7 элементы, 9 и 11 элементы.


А если ген выкинет 1 or 2 or 4 ???

P/S
17. Карточка №6. А если - 15. Карточка №1

327
17 ноября 2014 года
UserNet2008
748 / / 03.04.2010
Примерно так - правда не всё по условию как в 17. Карточка №6.

Код:
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

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог