Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Visual Basic 2005 (word97).doc
Скачиваний:
296
Добавлен:
09.02.2015
Размер:
7.31 Mб
Скачать

Приложение 51

Дан одномерный массив городов. Известно название каждого города, дневная и ночная температура. Упорядочить города по убыванию среднесуточной температуры. Исходные данные и полученные результаты вывести в окно списка.

Описание структуры

Public Structure Gorod

Public Nazvanie As String

Public Den As Integer

Public Noch As Integer

Public Function Print() As String

Return Nazvanie + vbTab + Str(Den) + vbTab + _

Str(Noch)

End Function

Public Function Srednee() As Single

Return (Den + Noch) / 2

End Function

End Structure

Текст программы.

Dim a() As Gorod

Dim n, i As Integer

Dim z As Gorod

Dim sort As Boolean

lstGorod.Items.Clear()

Do

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

Loop Until n > 0

n -= 1

ReDim a(n)

For i = 0 To n

a(i).Nazvanie = InputBox("Название города")

a(i).Den = Val(InputBox("Дневная температура"))

a(i).Noch = Val(InputBox("Ночная температура"))

Next

lstGorod.Items.Add("Город" + vbTab + "День" + vbTab + _

"Ночь")

lstGorod.Items.Add("-------------------------------------")

For i = 0 To n

lstGorod.Items.Add(a(i).Print)

Next

Do

sort = True

For i = 0 To n - 1

If a(i).Srednee < a(i + 1).Srednee Then

sort = False

z = a(i)

a(i) = a(i + 1)

a(i + 1) = z

End If

Next

Loop Until sort

lstGorod.Items.Add("-------------------------------------")

lstGorod.Items.Add("Массив после сортировки")

lstGorod.Items.Add("-------------------------------------")

For i = 0 To n

lstGorod.Items.Add(a(i).Print)

Next

Приложение 52

Дан целочисленный массив. Количество элементов и их значения вводятся с клавиатуры. В новый массив перенести четные элементы исходного массива. Исходный и сформированный массивы вывести в окно списка. Определить, есть ли в новом массиве отрицательные числа. Найти количество нулей в новом массиве.

При решении задачи использовать следующие подпрограммы:

  • процедуру ввода массива;

  • процедуру вывода массива в окно списка;

  • процедуру формирования нового массива;

  • функцию, проверяющую, есть ли в массиве отрицательные числа;

  • функцию для определения количества нулей в массиве.

Процедура ввода массива

Private Sub vvod(ByRef a() As Integer, _

ByRef n As Integer)

Dim i As Integer

Do

n = Val(InputBox("Введите количество элементов"))

Loop Until n > 0

n -= 1

ReDim a(n)

For i = 0 To n

a(i) = Val(InputBox("Введите " + Str(i) + _

"-й элемент массива"))

Next

End Sub

Процедура вывода массива

Private Sub Vyvod(ByVal a() As Integer, _

ByVal n As Integer)

Dim i As Integer

For i = 0 To n

lstA.Items.Add(Str(i) + vbTab + Str(a(i)))

Next

End Sub

Процедура формирования нового массива

Private Sub formirovanie(ByVal a() As Integer, _

ByVal n As Integer, _

ByRef b() As Integer, _

ByRef k As Integer)

Dim i As Integer

k = -1

For i = 0 To n

If a(i) Mod 2 = 0 Then

k += 1

ReDim Preserve b(k)

b(k) = a(i)

End If

Next

End Sub

Функция, проверяющая, есть ли в массиве отрицательные числа.

Private Function Proverka(ByVal a() As Integer, _

ByVal n As Integer) As Boolean

Dim i As Integer

For i = 0 To n

If a(i) < 0 Then

Return True

End If

Next

Return False

End Function

Функция для определения количества нулей в массиве

Private Function kolichestvo(ByVal a() As Integer, _

ByVal n As Integer) As Integer

Dim i, kol As Integer

kol = 0

For i = 0 To n

If a(i) = 0 Then

kol += 1

End If

Next

Return kol

End Function

Главная (вызывающая) программа

Dim a() As Integer

Dim n As Integer

Dim b() As Integer

Dim k As Integer

Dim kol As Integer

lstA.Items.Clear()

vvod(a, n)

lstA.Items.Add("Исходный массив")

lstA.Items.Add("Номер" + vbTab + "Значение")

Vyvod(a, n)

formirovanie(a, n, b, k)

lstA.Items.Add("-------------------------------")

If k = -1 Then

lstA.Items.Add("Новый массив пуст")

Else

lstA.Items.Add("Новый массив")

Vyvod(b, k)

If Proverka(b, k) Then

lstA.Items.Add("Есть отрицательные числа")

Else

lstA.Items.Add("Нет отрицательных чисел")

End If

kol = kolichestvo(b, k)

If kol = 0 Then

lstA.Items.Add("В массиве нет нулей")

Else

lstA.Items.Add("Количество нулей =" + _

Str(kol))

End If

End If

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