- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
Public Class F1
Inherits System.Windows.Forms.Form
Dim number(3, 30) As Integer REM Массив для хранения 200-значного числа
Private Sub B1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B1.Click
REM 52.5.16. Используя алгоритм вычисления функции n! в качестве вспомогательного,
REM напишите алгоритм вычисления суммы факториалов всех чётных чисел от 2 до 100.
Dim input As Integer REM Число, вводимое с клавиатуры
Dim a As Integer, b As Integer REM Временные переменные
REM Ввод числа с клавиатуры
L3.Text = ""
input = Int(Val(T1.Text))
If input < 0 Then input = 0
If input > 100 Then input = 100
For a = 1 To 3
For b = 1 To 30
number(a, b) = 0
Next
Next
number(1, 1) = 1
For a = 1 To input
multiply(a)
If a = input Or a Mod 20 = 0 Then
L3.Text = L3.Text & a & "! = "
shownumber(1)
L3.Text = L3.Text & " "
End If
Next
End Sub
Sub multiply(ByVal a As Integer) REM Умножение массива "number (1)" на число "a"
Dim d As Integer, e As Integer REM Временные переменные
For d = 1 To 30
number(1, d) = number(1, d) * a
Next
REM Перенос остатка, большего 10 млн., в следующий разряд массива
For d = 1 To 29
e = number(1, d) \ 10000000
number(1, d) = number(1, d) Mod 10000000
number(1, d + 1) = number(1, d + 1) + e
Next
If number(1, 30) > 10000000 Then
For d = 1 To 30
number(1, d) = 0
Next
End If
End Sub
Sub shownumber(ByVal a As Integer) REM Вывод на экран массива "number (a)"
Dim d As Integer, e As Integer, f As Integer REM Временные переменные
d = 30 REM Верхняя граница отображения числа (элемент не равен нулю)
While d > 1 And number(a, d) = 0 REM Вычисляем, где кончается ненулевая часть числа
d = d - 1
End While
REM Вывод старших разрядов
L3.Text = L3.Text & number(a, d)
REM Вывод младших разрядов
d = d - 1
For e = d To 1 Step -1 REM Какое число в массиве выводим (по одной цифре)
f = number(a, e)
L3.Text = L3.Text & f \ 1000000 & f \ 100000 Mod 10 & f \ 10000 Mod 10 & f \ 1000 Mod 10 & f \ 100 Mod 10 & f \ 10 Mod 10 & f Mod 10
Next
End Sub
End Class
guest # 0
jura_k # 0