Введение 8 Этапы создания Windowsприложения 8
Скачать 6.98 Mb.
|
Приложение 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 Название языка 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 представляет собой кодировку для представления десятичных цифр, латинского и национального (в нашей стране – русского) алфавитов, знаков препинания и управляющих символов. |