Москва 2010
Задание 1
Dim N, M, C, R, mas(0 To 7, 0 To 7) As Integer
Private Sub Command1_Click() 'выбор способа задания матрицы
If Option1.Value = True Then
Frame2.Visible = True
Else
Frame3.Visible = True
End If
Frame1.Enabled = False
End Sub
Private Sub Command2_Click() 'задание матрицы вручную
N = CSng(TN.Text)
M = CSng(TM.Text)
If N > 7 Or M > 7 Then
vvod = MsgBox("Колическтво строк и столбцов не должно превышать 7", 16, "Ошибка")
Form1.Print vvod
Else
For i = 0 To N - 1 Step 1
For j = 0 To M - 1 Step 1
If i <> 0 Then
Text1(i * 7 + j).Enabled = True
Text1(i * 7 + j).BackColor = &HFFFFFF
Else
Text1(j).Enabled = True
Text1(j).BackColor = &HFFFFFF
End If
Next j
Next i
Command4.Visible = True
Command5.Enabled = True
Command2.Enabled = False
Command7.Visible = True
End If
End Sub
Private Sub Command4_Click() 'заполнение матрицы и преобразование из одномерного в двумерный массив
N = CSng(TN.Text)
M = CSng(TM.Text)
For i = 0 To N - 1 Step 1
For j = 0 To M - 1 Step 1
If i <> 0 Then
If IsNumeric(Text1(i * 7 + j).Text) Then
mas(i, j) = CSng(Int(Text1(i * 7 + j).Text))
Else
mas(i, j) = 0
End If
Else
If IsNumeric(Text1(j).Text) Then
mas(i, j) = CSng(Int(Text1(j).Text))
Else
mas(i, j) = 0
End If
End If
Next j
Next i
Call perestanovka
End Sub
Private Sub Command5_Click() 'очистить
Call clear
TN.Text = ""
TM.Text = ""
Command5.Enabled = False
Command2.Enabled = True
End Sub
Private Sub Command3_Click() 'автоматическое задание матрицы
Call clear
R = CSng(Combo1.Text) * 10
Randomize
N = Int(Rnd() * 7) + 1
Label5.Caption = CStr(N)
M = Int(Rnd() * 7) + 1
Label6.Caption = CStr(M)
For i = 0 To N - 1 Step 1
For j = 0 To M - 1 Step 1
If i <> 0 Then
Text1(i * 7 + j).Enabled = True
Text1(i * 7 + j).BackColor = &HFFFFFF
Text1(i * 7 + j).Text = CStr(Int((Rnd() * R)))
mas(i, j) = CSng(Int(Text1(i * 7 + j).Text))
Else
Text1(j).Enabled = True
Text1(j).BackColor = &HFFFFFF
Text1(j).Text = CStr(Int(Rnd() * R))
mas(i, j) = CSng(Int(Text1(j).Text))
End If
Next j
Next i
Call perestanovka
Command6.Enabled = True
Command3.Enabled = False
End Sub
Private Sub Command6_Click() 'очистить
Call clear
Command3.Enabled = True
Command6.Enabled = False
End Sub
Private Sub Command7_Click() 'очистить матрицу
For i = 0 To 48
Text1(i).Text = ""
Label9(i).Caption = ""
Label9(i).BackColor = &H80000016
Next i
End Sub
Public Sub perestanovka() ' сортировка массива (из одномерного делаем двумерный)
For z = 0 To N
For i = 0 To M
For j = i To M
If mas(z, j) > mas(z, i) Then
C = mas(z, j)
mas(z, j) = mas(z, i)
mas(z, i) = C
End If
Next j
Next i
Next z
For i = 0 To N - 1 Step 1 'вывод пересортированного массива
For j = 0 To M - 1 Step 1
If i <> 0 Then
Label9(i * 7 + j).BackColor = &H8000000F
Label9(i * 7 + j).Caption = CStr(Int(mas(i, j)))
Else
Label9(j).BackColor = &H8000000F
Label9(j).Caption = CStr(Int(mas(i, j)))
End If
Next j
Next i
End Sub
Public Sub clear() 'очистка(квадратики массива неактивные и более серые)
For i = 0 To 48
Text1(i).Text = ""
Text1(i).Enabled = False
Text1(i).BackColor = &H80000016
Label9(i).Caption = ""
Label9(i).BackColor = &H80000016
Next i
End Sub
Private Sub Command8_Click() 'сброс всего
Call clear
N = 0
M = 0
Frame1.Enabled = True
Frame2.Visible = False
Frame3.Visible = False
Command4.Visible = False
Command7.Visible = False
Option1.Value = False
Option2.Value = True
End Sub
Private Sub Command9_Click()
End
End Sub
Задание 2
Dim minX, maxX, dX, k, ky, maxY1, maxY2, maxY, xp, PreX, PreY, TY, TX As Double
Private Sub Command1_Click() 'кнопка построить
minX = CDec(Text1.Text)
maxX = CDec(Text2.Text)
dX = CDec(Text3.Text)
k = Picture1.Width / (maxX - minX)
If minX >= (0.7) Then maxY1 = Sqr(10 * minX - 7) + 1 Else maxY1 = 0
If maxX >= (0.7) Then maxY2 = Sqr(10 * maxX - 7) + 1 Else maxY2 = 0
If maxY1 >= maxY2 Then maxY = maxY1 Else maxY = maxY2
ky = Picture1.Height / maxY
Label7.Caption = minX
Label8.Caption = maxX
Label11.Caption = (maxX + minX) / 2
Label9.Caption = maxX / 4 + minX * 3 / 4
Label10.Caption = minX / 4 + maxX * 3 / 4
Label12.Caption = -maxY / 3
Label13.Caption = maxY
Label14.Caption = 0
Label15.Caption = maxY / 3
Label16.Caption = 2 * maxY / 3
Picture1.Cls
Picture1.Line (0, Picture1.Height * 0.75)-(Picture1.Width, Picture1.Height * 0.75)
For X = minX To maxX Step dX
If X = minX Then
PreX = X
PreY = Sqr(10 * X - 7) + 1
Picture1.PSet (PreX * k, Picture1.Height * 0.75 - PreY * ky)
Else
TX = X
TY = Sqr(10 * X - 7) + 1
Picture1.Line (PreX * k, Picture1.Height * 0.75 - PreY * ky)-(TX * k, Picture1.Height * 0.75 - TY * ky)
PreX = TX
PreY = TY
End If
Next X
End Sub
Private Sub Command2_Click() 'кнопка проверка значений
If CDec(Text1.Text) < 0.7 Or CDec(Text2.Text) < 0.7 Then
vvod = MsgBox("Вводимые значение X должно быть > или = 0,7", 16, "Ошибка!!!")
Form1.Print vvod
Else
If CDec(Text1.Text) >= CDec(Text2.Text) Then
vvod = MsgBox("Предельное значение X должно быть больше начального", 16, "Ошибка!!!")
Form1.Print vvod
Else
Command1.Enabled = True
Command2.Enabled = False
End If
End If
End Sub
Private Sub Command3_Click() 'кнопка сброс
Text1.Text = 0
Text2.Text = 0
Text3.Text = 0
Command2.Enabled = True
Command1.Enabled = False
Label7.Caption = ""
Label8.Caption = ""
Label11.Caption = ""
Label9.Caption = ""
Label10.Caption = ""
Label12.Caption = ""
Label13.Caption = ""
Label14.Caption = ""
Label15.Caption = ""
Label16.Caption = ""
Picture1.Cls
End Sub
Private Sub Command4_Click()
End
End Sub
Задание 3
Dim strA, strB, strG(1 To 20) As String, i, N As Integer
Private Sub Command1_Click()
N = 0
i = 0
strA = InputBox("Введите строку: ", "Ввод строки")
Do While i < Len(strA)
i = i + 1
strB = Mid(strA, i, 1)
If strB = "а" Or strB = "е" Or strB = "ё" Or strB = "и" Or strB = "о" Or strB = "у" Or strB = "ы" Or strB = "ю" Or strB = "э" Or strB = "я" Or strB = "А" Or strB = "Е" Or strB = "Ё" Or strB = "И" Or strB = "О" Or strB = "У" Or strB = "Ю" Or strB = "Э" Or strB = "Я" Then
N = N + 1
End If
Loop
Label1.Caption = N
End Sub
Private Sub Command3_Click()
Label1.Caption = ""
End Sub
Private Sub Command2_Click()
End
End Sub