Главная страница
Навигация по странице:

  • Сортировка с учетом регистра.

  • Сортировка без учета регистра.

  • Введение 8 Этапы создания Windowsприложения 8


    Скачать 6.98 Mb.
    НазваниеВведение 8 Этапы создания Windowsприложения 8
    АнкорVisual Basic 2005 (word97).doc
    Дата22.12.2017
    Размер6.98 Mb.
    Формат файлаdoc
    Имя файлаVisual Basic 2005 (word97).doc
    ТипРеферат
    #12532
    страница63 из 63
    1   ...   55   56   57   58   59   60   61   62   63

    Приложение 47


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

    Сортировка с учетом регистра.

    Dim s As String

    Dim i As Integer

    Dim slova() As String

    Dim n As Integer

    Dim sort As Boolean

    Dim z As String

    lstText.Items.Clear()

    s = InputBox("Введите строку")

    lstText.Items.Add(s)

    s = Strings.Trim(s)

    Do Until Strings.InStr(s, " ") = 0

    s = Strings.Replace(s, " ", " ")

    Loop

    slova = Strings.Split(s)

    n = UBound(slova)

    Do

    sort = True

    For i = 0 To n - 1

    If slova(i) > slova(i + 1) Then

    sort = False

    z = slova(i)

    slova(i) = slova(i + 1)

    slova(i + 1) = z

    End If

    Next

    Loop Until sort

    s = Strings.Join(slova, " ")

    lstText.Items.Add("------------------------------------")

    lstText.Items.Add(s)

    Сортировка без учета регистра.

    Dim s As String

    Dim i As Integer

    Dim slova() As String

    Dim n As Integer

    Dim sort As Boolean

    Dim z As String

    lstText.Items.Clear()

    s = InputBox("Введите строку")

    lstText.Items.Add(s)

    s = Strings.Trim(s)

    Do Until Strings.InStr(s, " ") = 0

    s = Strings.Replace(s, " ", " ")

    Loop

    slova = Strings.Split(s)

    n = UBound(slova)

    Do

    sort = True

    For i = 0 To n - 1

    If Strings.UCase(slova(i)) > _

    Strings.UCase(slova(i + 1)) Then

    sort = False

    z = slova(i)

    slova(i) = slova(i + 1)

    slova(i + 1) = z

    End If

    Next

    Loop Until sort

    s = Strings.Join(slova, " ")

    lstText.Items.Add("------------------------------------")

    lstText.Items.Add(s)

    Приложение 48


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

    Dim Tekst() As String

    Dim n As Integer

    Dim slova() As String

    Dim k As Integer

    Dim i, j As Integer

    Dim s As String

    lstText.Items.Clear()

    Do

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

    Loop Until n > 0

    n -= 1

    ReDim Tekst(n)

    For i = 0 To n

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

    "-ю строку текста")

    Next

    For i = 0 To n

    lstText.Items.Add(Tekst(i))

    Next

    For i = 0 To n

    s = Strings.Trim(Tekst(i))

    Do Until Strings.InStr(s, " ") = 0

    s = Strings.Replace(s, " ", " ")

    Loop

    slova = Strings.Split(s)

    k = UBound(slova)

    s = ""

    For j = 0 To k

    s = slova(j) + " " + s

    Next

    Tekst(i) = Strings.Trim(s)

    Next

    lstText.Items.Add("------------------------------------")

    For i = 0 To n

    lstText.Items.Add(Tekst(i))

    Next

    Приложение 49


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

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

    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 max, min As Gorod

    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

    max = a(0)

    min = a(0)

    For i = 1 To n

    If a(i).Den > max.Den Then

    max = a(i)

    End If

    If a(i).Noch < min.Noch Then

    min = a(i)

    End If

    Next

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

    lstGorod.Items.Add("Город с макс. дневной температурой")

    lstGorod.Items.Add(max.Print)

    lstGorod.Items.Add("Город с мин. ночной температурой")

    lstGorod.Items.Add(min.Print)

    Приложение 50


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

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

    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 b() As Gorod

    Dim k As Integer

    Dim Summa As Integer

    Dim Sred As Single

    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

    Summa = 0

    For i = 0 To n

    Summa += a(i).Den

    Next

    sred = Summa / (n + 1)

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

    lstGorod.Items.Add("Средняя дневная температура:" + _

    Str(Sred))

    k = -1

    For i = 0 To n

    If a(i).Den > Sred Then

    k += 1

    ReDim Preserve b(k)

    b(k) = a(i)

    End If

    Next

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

    lstGorod.Items.Add("Результирующий массив")

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

    If k < 0 Then

    lstGorod.Items.Add("Таких городов нет")

    Else

    For i = 0 To k

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

    Next

    End If

    Приложение 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

    Список литературы


    1. Волчёнков Н.Г. Программирование на Visual Basic 6: В 3-х ч. Часть 1. – М.: ИНФРА-М, 2000. – 286 с.

    2. Шевякова Д.А., Степанов А.М., Карпов Р.Г. Самоучитель Visual Basic 2005 / под общ. ред. А.Ф. Тихонова. – СПб.: БХВ-Петербург, 2007. – 576 с.

    3. Богданов М.Р. Visual Basic 2005 на примерах. – СПб.: БХВ-Петербург, 2007. – 592 с.

    1 Название языка BASIC является аббревиатурой. Оно образовано из первых букв словосочетания Beginner’s All-purpose Symbolic Instruction Code (универсальный язык программирования для начинающих).

    2 MSDN – Microsoft Developer Network – подразделение компании Microsoft, ответственное за взаимодействие фирмы с разработчиками программного обеспечения, работает как информационный сервис для разработчиков.

    3 Допускается использование в именах как латинских, так и русских букв. Но желательно ограничиться только латинским алфавитом, чтобы уменьшить количество ошибок в программе.

    4 В предыдущих версиях Visual Basic массивы по способу описания делились на статические и динамические. Размер статического массива определялся один раз при его описании и не мог меняться в процессе выполнения программы. Размер динамического массива при описании не указывался, а задавался в процессе выполнения программы. Размер динамического массива можно было многократно менять в процессе выполнения программы. Причем допускалось как уменьшение размера массива, так и его увеличение. Начиная с версии Visual Basic 2005, понятие статического массива исчезает. Все массивы в Visual Basic 2005 являются динамическими, независимо от способа их объявления.

    5 Visual Basic 2005 позволяет сформулировать условное выражение в более привычном виде.

    If test = True Then ...

    Работоспособность программы при этом не изменится, но такая запись считается в программировании «дурным тоном».

    6 Также допускается следующая запись конкатенации.

    s = s1 & s2

    7 ASCII (American Standard Code for Information Interchange) – американский стандартный код для обмена информацией. ASCII представляет собой кодировку для представления десятичных цифр, латинского и национального (в нашей стране – русского) алфавитов, знаков препинания и управляющих символов.

    1   ...   55   56   57   58   59   60   61   62   63


    написать администратору сайта