Поиск минимального и максимального элементов
НОД
Движение брошенного под углом тела с учетом силы тяжести
Поиск повторяющихся элементов
Простейшая кинетика
Private Sub CommandButton1_Click()
Dim CA As Double
Dim CB As Double
Dim CA0 As Double
Dim CB0 As Double
Dim K1 As Double
Dim K2 As Double
Dim T As Double 'Время
Dim TT As Double 'Длина временного интервала
Dim dT As Double 'Шаг по времени
Dim dCA As Double 'Приращение концентрации CA за время dT
Dim count As Integer 'Счетчик строк в таблице концентраций
K1 = Cells(18, 2)
K2 = Cells(18, 3)
dT = Cells(18, 6)
TT = Cells(18, 7)
T = 0 'Начало отсчета времени
CA0 = Cells(18, 4) 'Начальная концентрация вещества A
CB0 = Cells(18, 5) 'Начальная концентрация вещества B
count = 1
CA = CA0
CB = CB0
Do While T <= TT
Cells(22 + count, 1) = T
Cells(22 + count, 2) = CA
Cells(22 + count, 3) = CB
dCA = (-K1 * CA + K2 * (CB0 + 2 * (CA0 - CA))) * dT
CA = CA + dCA
CB = CB - 2 * dCA
T = T + dT
count = count + 1
'Debug.Print count; dCA; K1; CA; K2; CB
Loop
End Sub
Private Sub CommandButton1_Click()
Dim i As Integer, j As Integer, k As Integer, n As Integer
Dim A() As Integer
n = 20
ReDim A(n)
For i = 1 To n
A(i) = Int(100 * Rnd)
Cells(i, 1) = A(i)
Next i
'=====================================
Range("c1:d20").ClearContents
Dim T() As Integer, L() As Integer, R() As Integer, Count() As Integer
Dim uk As Integer, TT As Integer
ReDim T(n), L(n), R(n), Count(n)
T(1) = A(1): k = 1 'Инициализация Дерева
Cells(1, 3) = A(1): Cells(1, 4) = 1
For i = 2 To n: TT = 1 'Перебор и проверка исходных чисел
check:
If A(i) = T(TT) Then
Debug.Print A(i)
Count(TT) = Count(TT) + 1: Cells(TT, 4) = Count(TT)
GoTo Skip 'Найден двойник !
End If
If A(i) < T(TT) Then GoTo Left 'К левому поддереву
'A(I)>T(TT), значит идем по правому поддереву
uk = R(TT)
If uk = 0 Then
k = k + 1: R(TT) = k: T(k) = A(i): Count(k) = 1: Cells(k, 3) = A(i): Cells(k, 4) = 1
GoTo Skip 'Новый правый сын !
Else
TT = uk: GoTo check
End If
Left:
'A(I)<T(TT), значит идем по левому поддереву
uk = L(TT)
If uk = 0 Then
k = k + 1: L(TT) = k: T(k) = A(i): Count(k) = 1: Cells(k, 3) = A(i): Cells(k, 4) = 1
GoTo Skip 'Новый левый сын !
Else
150 TT = uk: GoTo check
End If
Skip:
Next i
End Sub
Sub Кнопка1_Щелчок()
Dim v As Double, alpha As Double, m As Double
Dim a As Double, b As Double, c As Double, dt As Double
Dim t As Double, x As Double, y As Double
Dim vx As Double, vy As Double, ax As Double, ay As Double
Dim Ftr As Double, S_alpha, C_alpha
Dim count As Integer
Const g = 9.81
Const Pi = 3.14159265358979
Range("A4:H1000").ClearContents
v = Cells(2, 1)
alpha = Cells(2, 2) * Pi / 180: S_alpha = Sin(alpha): C_alpha = Cos(alpha)
m = Cells(2, 3)
a = Cells(2, 4): b = Cells(2, 5): c = Cells(2, 6)
dt = Cells(2, 7)
t = 0: count = 0: x = 0: y = 0
vx = v * Cos(alpha): vy = v * Sin(alpha)
povtor:
Ftr = a * v ^ 2 + b * v + c: Cells(4 + count, 8) = Ftr
ax = -Sgn(vx) * Ftr * C_alpha / m: ay = -g - Sgn(vy) * Ftr * S_alpha / m
Cells(4 + count, 1) = t
Cells(4 + count, 2) = x
Cells(4 + count, 3) = y
Cells(4 + count, 4) = vx
Cells(4 + count, 5) = vy
Cells(4 + count, 6) = ax
Cells(4 + count, 7) = ay
count = count + 1
t = t + dt: Cells(2, 8) = t
vx = vx + ax * dt: vy = vy + ay * dt
v = Sqr(vx ^ 2 + vy ^ 2): S_alpha = vy / v: C_alpha = vx / v
x = x + vx * dt: y = y + vy * dt
If y > o Then GoTo povtor
End Sub
Private Sub CommandButton1_Click()
Dim a As Long, b As Long, c As Long
a = Cells(1, 1)
b = Cells(1, 2)
c = Nod(a, b)
Cells(1, 3) = c
MsgBox "Ok"
Range("A1:C1").ClearContents
End Sub
Public Function Nod(a As Long, b As Long) As Long
Dim r As Long
If b > a Then r = a: a = b: b = r
r = a Mod b
If r <> 0 Then Nod = Nod(b, r) Else Nod = b
End Function
Sub Кнопка1_Щелчок()
Dim n As Integer, i As Integer
Dim i_min As Integer, i_max As Integer
Dim x_min As Integer, x_max As Integer
n = Cells(2, 1)
ReDim x(n) As Integer
For i = 1 To n
x(i) = Int(100 * Rnd)
Cells(1 + i, 2) = x(i)
Next i
i_max = 1: x_max = x(1)
i_min = 1: x_min = x(1)
For i = 2 To n
If x(i) > x_max Then x_max = x(i): i_max = i
If x(i) < x_min Then x_min = x(i): i_min = i
Cells(2, 3) = i_max: Cells(2, 4) = x_max
Cells(2, 5) = i_min: Cells(2, 6) = x_min
Next i
End Sub