Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ргр по информатике.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.15 Mб
Скачать

Создание программ обработки одномерных массивов Задание: в одномерном числовом массиве вычислить сумму элементов, значение которых меньше значения последнего положительного элемента

Программный код:

Dim n As Integer, i As Integer ‘процедура кнопки вывода массива на форму

Dim x() As Single

Private Sub CmdTest_Click()

Dim newline As String, elements As String

newline = Chr(13) + Chr(10)

TxtX.Text = "Элементы массива:" + newline

For i = 1 To n

TxtX.Text = TxtX.Text + Format(x(i), "0.0 ")

Next i

End Sub

Private Sub CmdVvod_Click() ‘ввод массива

‘изменение свойств

‘кнопка Проверка ввода и Вычислить

CmdTest.Enabled = True

CmdWork.Enabled = True

n = Val(InputBox("Введите число", "Задание размерности массива"))

ReDim x(n)

If OpbHand.Value = True Then

For i = 1 To n

x(i) = Val(InputBox("Ввод " & i & "-го элемента", "Ввод массива"))

Next i

Else

For i = 1 To n

x(i) = Int(n * Rnd - n / 2)

Next i

End If

CmdVvod.Caption = "Массив введен!"

End Sub

Private Sub CmdWork_Click()

Dim Sum As Single, Product As Single

If ChbSum.Value = 1 Then

Sum = 0

For i = n To 1 Step -1

If x(i) > 0 Then

k = x(i)

Exit For

End If

Next i

Sum = 0

For i = 1 To n

If x(i) > k Then

Sum = Sum + x(i)

End If

Next i

LblSum.Text = Sum

Else

LblSum.Text = ""

End If

End Sub

Private Sub CmdReset_Click()

CmdTest.Enabled = False

CmdWork.Enabled = False

CmdVvod.Caption = "Ввести массив..."

CmdVvod.SetFocus

TxtX.Text = ""

LblSum.Text = ""

Sum = 0

For i = 1 To n

x(i) = 0

Next i

End Sub

Теория, краткое описания команд:

Описание массивов

Dim имя (индекс1[,индекс2]) [As тип], …

где имя - имя массива, удовлетворяющее стандартным правилам именования переменных;

ReDim имя (индекс1[,индекс2])

Оператор Option Base применяется для задания нижней границы индексов массива

Option Base {0 | 1}

Оператор цикла For Each...Next повторяет выполнение блока операторов для каждого элемента массива или семейства.

For Each элемент In группа

Блок операторов

[Exit For]

Next [элемент]

При работе с массивами данных возникает необходимость использования вложенных циклов (один цикл For...Next или DoLoop или For...Each...Next располагается внутри другого):

For I = 1 To 10

For J = 1 To 10

For K = 1 To 10

...

Next K

Next J

Next I

Скриншоты:

Задание 5

Создание программ обработки многомерных массивов и использование процедур. Задание: Найти первое кратное «3» число и заменить на его первый элемент

Программный код:

Dim n As Integer, m As Integer

Dim a() As Single

Public Sub vivod_Msg()

'Вывод массива в окно сообщения

For i = 1 To n

For j = 1 To m

st$ = st$ & Format(a(i, j), "##") & " "

Next j

st$ = st$ & Chr(13)

Next i

MsgBox "Массив" & Chr(13) & " " & st$

End Sub

Public Sub vivod_Immediate()

'вывод массива в окно Отладки

For i = 1 To n

For j = 1 To m

Debug.Print a(i, j);

Next j

Debug.Print

Next i

End Sub

Public Sub vivod_Form()

'вывод массива на форму

For i = 1 To n

For j = 1 To m

TxtВвод.Text = TxtВвод.Text & a(i, j) & " "

Next j

TxtВвод.Text = TxtВвод.Text & Chr(13) + Chr(10)

Next i

End Sub

Private Sub CmdВвод_Click()

n = InputBox("Введите количество строк:")

m = InputBox("Введите количество столбцов:")

ReDim a(n, m)

LblУсловие.Caption = "Задан двумерный массив " & "a(" & n & "," & m & ")"

Call vvod

'вывод массива на форму

If Chk1.Value = 1 Then Call vivod_Form

'вывод массива в окно Отладки

If Chk2.Value = 1 Then Call vivod_Immediate

'Вывод массива в окно сообщения

If Chk3.Value = 1 Then Call vivod_Msg

End Sub

Private Sub CmdЗадача1_Click()

'Нахождения 1-го положительного в массиве

LblЗадача3.Caption = Pol(i1, j1)

End Sub

Private Sub CmdЗадача3_Click()

For i = 1 To m

For j = 1 To n

If ((a(i, j) Mod 3) = 0) Then a(i, j) = a(1, 1)

Next j

Next i

For i = 1 To m

For j = 1 To n

TxtЗадача1.Text = TxtЗадача1.Text & a(i, j) & " "

Next j

TxtЗадача1.Text = TxtЗадача1.Text & Chr(13) + Chr(10)

Next i

End Sub

Private Sub CmdЗадача2_Click()

'Вывод на форму значения функции Sr

LblЗадача2.Caption = Format(Sr(), "00.0")

End Sub

Public Sub vvod()

If Opt1.Value = True Then

'ввод массива в окне сообщения

For i = 1 To n

For j = 1 To m

a(i, j) = InputBox("введите элемент:" & i & "," & j, "Ввод элементов")

Next j, i

ElseIf Opt2.Value = True Then

'ввод массива генератором

For i = 1 To n

For j = 1 To m

a(i, j) = Int(100 * Rnd - 60)

Next j, i

End If

End Sub

Function Pol(i1, j1)

Dim flag As Integer

For j = 1 To m

flag = 0

For i = 1 To n

If a(i, j) > 0 Then

flag = 1

Pol = a(i, j): i1 = i: j1 = j

Exit For

End If

Next i

If flag = 1 Then Exit For

Next j

End Function

Public Function Sr()

Dim ko As Integer

Dim s As Single

For i = 1 To n

For j = 1 To m

If a(i, j) < 0 Then s = s + a(i, j): ko = ko + 1

Next j

Next i

Sr = s / ko

End Function

Private Sub CmdСброс_Click()

TxtВвод.Text = ""

LblЗадача3.Caption = ""

TxtЗадача1.Text = ""

LblЗадача2.Caption = ""

End Sub

Теория, краткое описания команд:

В VB есть возможность задать свойства объектов программно с помощью оператора With … End With, который выполняет последовательность операторов над одиночным объектом

With объект

[блок операторов]

End With

где объект -имя объекта;

блок операторов - один или несколько операторов, выполняемых над объектом или

.элемент управления.свойство=значение.

Процедура типа Sub.

[Private | Public] Sub имя ([список аргументов])

операторы

End Sub

Обращение к процедуре Sub

Call имя(список аргументов)

где Public - указывает, что процедура доступна для всех других процедур во всех модулях,

Private - доступна для других процедур только того модуля, в котором она описана;

Процедуры Function.

[Public | Private] Function имя([список аргументов]) [As тип]

операторы

имя = выражение

End Function

Скриншоты:

Задание 6

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]