Массивы

Тема в разделе "Visual Basic", создана пользователем Shyrik, 9 июн 2008.

  1. Shyrik

    Shyrik Гость

    Всем доброго времени суток.
    Помогите, пожалуйста, отладить программу.
    Задание: Лабораторная, включает в себя четыре задачи на массивы(3 на одномерные и 1 двумерный), всё сделано в менюшке.
    Сами задания:
    1)Напечатать индексы положительных элементов, содержащихся в массиве.
    2)Поменять местами максимальный и минимальный элементы массива.
    3)В массиве последний отрицательный элемент поставить на первое место.
    4) Из матрицы сформировать одномерный массив, элементы которого равны элементам строки, имеющей максимальную сумму элементов.


    Мой вопрос заключается в том, чтобы:
    1) 1-й недочёт в том, что после выполнения второго задания первоначальный массив преобразовывается и в 3-й начинает работать уже с преобразованным. Помогите, пожалуйста, сделать так, чтобы он работал с изначальным.
    2) 2-й недочёт в том, что в 4-й задаче нужно, чтобы одномерный массив ФОРМИРОВАЛСЯ из матрицы, а не печатался.

    p.s. Помогите, пожалуйста, кто может.
    В знак благодарности могу кинуть голосов к рейтингу в контакте. :)


    Далее форма.
    [​IMG]

    Программный код.
    [codebox]Dim ex As Byte
    Dim i, j As Integer
    Dim s, suma, maxsuma As Integer
    Dim m, n As Integer
    Dim min, max As Integer
    Dim minN, maxN As Integer
    Dim tmp As Integer
    Dim a() As Integer
    Dim b() As Integer

    Private Sub mnuTask1_Click()
    Task1
    End Sub
    Private Sub cmdTask1_Click()
    Task1
    End Sub
    Private Sub mnuTask2_Click()
    Task2
    End Sub
    Private Sub cmdTask2_Click()
    Task2
    End Sub
    Private Sub mnuTask3_Click()
    Task3
    End Sub
    Private Sub cmdTask3_Click()
    Task3
    End Sub
    Private Sub mnuTask4_Click()
    Task4
    End Sub
    Private Sub cmdTask4_Click()
    Task4
    End Sub
    Private Sub mnuArr1CreateA_Click()
    GetArray1
    GetArray1A
    PrintArray1
    End Sub
    Private Sub mnuArr1CreateH_Click()
    GetArray1
    GetArray1H
    PrintArray1
    End Sub
    Private Sub mnuArr2CreateA_Click()
    GetArray2
    GetArray2A
    PrintArray2
    End Sub
    Private Sub mnuArr2CreateH_Click()
    GetArray2
    GetArray2H
    PrintArray2
    End Sub
    Private Sub mnuClear_Click()
    mnuStart.Caption = "Включить"
    mnuArray.Enabled = False
    mnuArray1.Enabled = True
    mnuArray2.Enabled = True
    mnuTasks.Enabled = False
    mnuTask1.Enabled = False
    mnuTask2.Enabled = False
    mnuTask3.Enabled = False
    mnuTask4.Enabled = False
    cmdTask1.Enabled = False
    cmdTask2.Enabled = False
    cmdTask3.Enabled = False
    cmdTask4.Enabled = False
    txtO.Text = ""
    End Sub
    Private Sub cmdClear_Click()
    txtO.Text = ""
    End Sub
    Private Sub mnuExit_Click()
    ex = MsgBox("Вы действительно хотите выйти?", 36, "Выход")
    If ex = 6 Then End
    End Sub
    Private Sub mnuStart_Click()
    If mnuArray.Enabled = False Then
    mnuArray.Enabled = True
    mnuTasks.Enabled = True
    mnuStart.Caption = "Отключить"
    Else
    mnuArray.Enabled = False
    mnuTasks.Enabled = False
    mnuStart.Caption = "Запустить"
    End If
    End Sub
    Sub GetArray1()
    m = Val(InputBox("Введите длинну одномерного массива:", "Создание одномерного массива", "5"))
    ReDim a(1 To m)
    mnuTask1.Enabled = True
    mnuTask2.Enabled = True
    mnuTask3.Enabled = True
    cmdTask1.Enabled = True
    cmdTask2.Enabled = True
    cmdTask3.Enabled = True
    mnuArray2.Enabled = False
    txtO.Text = ""
    End Sub
    Sub GetArray2()
    m = Val(InputBox("Введите M для двумерного массива:", "Создание двумерного массива", "5"))
    n = Val(InputBox("Введите N для двумерного массива:", "Создание двумерного массива", "5"))
    ReDim a(1 To m, 1 To n)
    mnuTask4.Enabled = True
    cmdTask4.Enabled = True
    mnuArray1.Enabled = False
    txtO.Text = ""
    End Sub
    Sub GetArray1A()
    Randomize Timer
    For i = 1 To m
    a(i) = Rnd * 101
    Next i
    End Sub
    Sub GetArray1H()
    For i = 1 To m
    a(i) = Val(InputBox("Введите элемент массива a (" + Str(i) + " ):", "Ввод одномерного массива", "1"))
    Next i
    End Sub
    Sub GetArray2A()
    Randomize Timer
    For i = 1 To m
    For j = 1 To n
    a(i, j) = Rnd * 101
    Next j
    Next i
    End Sub
    Sub GetArray2H()
    For i = 1 To m
    For j = 1 To n
    a(i, j) = Val(InputBox("Введите элемент массива a (" + Str(i) + " , " + Str(j) + " ):", "Ввод двумерного массива", "1"))
    Next j
    Next i
    End Sub
    Sub PrintArray1()
    txtO.Text = txtO.Text + "Содержимое одномерного массива:" + vbCrLf
    For i = 1 To m
    txtO.Text = txtO.Text + Str(a(i)) + " "
    Next i
    txtO.Text = txtO.Text + vbCrLf

    End Sub
    Sub PrintArray2()
    txtO.Text = txtO.Text + "Содержимое двумерного массива:" + vbCrLf
    For i = 1 To m
    For j = 1 To n
    txtO.Text = txtO.Text + Str(a(i, j)) + " "
    Next j
    txtO.Text = txtO.Text + vbCrLf
    Next i
    End Sub
    Sub Task1()
    s = 0
    PrintArray1
    txtO.Text = txtO.Text + "Выполнение задания №1" + vbCrLf
    txtO.Text = txtO.Text + "Номера положительных элементов:" + vbCrLf
    For i = 1 To m
    If a(i) > 0 Then
    txtO.Text = txtO.Text + Str(i) + " "
    Else
    s = s + 1
    End If
    Next i
    If s = 0 Then MsgBox "Все элементы положительные"
    If s = 5 Then MsgBox "Все элементы отрицательные"
    txtO.Text = txtO.Text + vbCrLf
    End Sub
    Sub Task2()
    PrintArray1
    min = a(1)
    max = a(1)
    minN = 1
    maxN = 1
    For i = 2 To m
    If a(i) < min Then min = a(i): minN = i
    If a(i) > max Then max = a(i): maxN = i
    Next i
    tmp = a(minN)
    a(minN) = a(maxN)
    a(maxN) = tmp
    txtO.Text = txtO.Text + "Выполнение задания №2" + vbCrLf
    txtO.Text = txtO.Text + "Итоговый массив (после обмена значений элементов):" + vbCrLf
    For i = 1 To m
    txtO.Text = txtO.Text + Str(a(i)) + " "
    Next i
    txtO.Text = txtO.Text + vbCrLf + "Поменялись местами следующие элементы:" + vbCrLf
    txtO.Text = txtO.Text + "Максимальный: a (" + Str(maxN) + " ) = " + Str(a(minN)) + vbCrLf
    txtO.Text = txtO.Text + "Минимальный: a (" + Str(minN) + " ) = " + Str(a(maxN)) + vbCrLf
    End Sub
    Sub Task3()
    s = 0
    PrintArray1
    For i = 1 To m
    If a(i) < 0 Then minN = i
    Next i
    tmp = a(1)
    a(1) = a(minN)
    a(minN) = tmp
    txtO.Text = txtO.Text + "Выполнение задания №3" + vbCrLf
    txtO.Text = txtO.Text + "Итоговый массив (после обмена значений элементов):" + vbCrLf
    For i = 1 To m
    txtO.Text = txtO.Text + Str(a(i)) + " "
    If a(i) < 0 Then s = 1
    If a(i) < 0 And i = m Then s = m + 1
    Next i
    If s = 0 Then MsgBox " отрицательных элементов нет"
    If s = m + 1 Then MsgBox "отрицательный элемент на последнем месте"
    txtO.Text = txtO.Text + vbCrLf + "Элемент a (" + Str(minN) + " ), равный" + Str(a(1)) + ", поменялся значениями с первым элементом." + vbCrLf
    End Sub
    Sub Task4()
    maxN = 0
    For i = 1 To m
    suma = 0
    For j = 1 To n
    suma = suma + a(i, j)
    Next
    If suma > maxsuma Then maxsuma = suma: maxN = i
    txtO.Text = txtO.Text + "Сумма элементов строки №" + Str(i) + " = " + Str(suma) + vbCrLf
    Next
    txtO.Text = txtO.Text + "Максимальная сумма обнаружена в строке №" + Str(maxN) + " и равна" + Str(maxsuma) + vbCrLf
    txtO.Text = txtO.Text + "Формирование строки №" + Str(maxN) + vbCrLf
    For i = 1 To n
    txtO.Text = txtO.Text + Str(a(maxN, i)) + " "
    Next
    txtO.Text = txtO.Text + vbCrLf
    End Sub[/codebox]
     
Загрузка...
Похожие Темы - Массивы
  1. Искушенный
    Ответов:
    0
    Просмотров:
    427
  2. Искушенный
    Ответов:
    1
    Просмотров:
    414
  3. Искушенный
    Ответов:
    1
    Просмотров:
    381
  4. Rpp
    Ответов:
    1
    Просмотров:
    807
  5. romanovbadboy2
    Ответов:
    0
    Просмотров:
    667

Поделиться этой страницей