Компьютерная подготовка (КП). Домашняя работа по В
.docДомашка по ВБА №1. Модули:
Подсчитывает количество цифр 5 в целом числе, введенном с клавы.
Sub a()
Dim x As Long, a As Long
Dim s As Integer, c As Integer
x = InputBox("Введите целое число")
a = Abs(x): s = 0
While a <> 0
c = a Mod 10
If c = 5 Then s = s + 1
a = a \ 10
Wend
MsgBox "количество цифр 5 в этом числе =" + Str(s)
End Sub
Находит максимальн. Цифру в целом числе с клавы.
Sub b()
Dim x As Long, a As Long
Dim max As Integer, c As Integer
x = InputBox("Введите целое число")
a = Abs(x): max = 0
While a <> 0
c = a Mod 10
If c >= max Then max = c
a = a \ 10
Wend
MsgBox "максимальная цифра=" + Str(max)
End Sub
Определяет, простое число или нет (с клавы)
Sub c()
Dim x As Integer, b As Integer
Dim fl As Byte
1: x = InputBox("Введите натуральное число")
If x <= 0 Then MsgBox "это не НАТУРАЛЬНОЕ число!": GoTo 1
fl = 0
For b = 2 To x \ 2
If x Mod b = 0 Then fl = 1: Exit For
Next b
If fl = 0 Then MsgBox ("это число простое") Else MsgBox ("это число не простое")
End Sub
Найти количество простых среди всех натуральных двухразрядных чисел.
Sub d()
Dim x As Integer, b As Integer, k As Integer
Dim fl As Byte
fl = 0: k = 0
For x = 10 To 99
For b = 2 To x \ 2
If x Mod b = 0 Then fl = 1: GoTo 1 Else: fl = 0
Next b
1: If fl = 0 Then k = k + 1 Else
Next x
MsgBox ("количество простых среди двухразрядных натуральных чисел =") + Str(k)
End Sub
Найти количество палиндромов (121, 474, 505) среди всех натур. Трехразрядных чисел.
Sub e()
Dim a As Integer, b As Integer, c As Integer, x As Integer, k As Integer
a = x Mod 10
b = x \ 10
c = b \ 10
k = 0
For x = 100 To 999
If a = c Then k = k + 1
Next x
MsgBox ("количество палиндромов =") + Str(k)
End Sub
Подсчитывает количество простых чисел в заданном с клавы диапазоне чисел.
Sub f()
Dim x As Integer, b As Integer, k As Integer, n As Integer, v As Integer
Dim fl As Byte
fl = 0: k = 0
n = InputBox("введите нижнюю границу диапазона"): v = InputBox("введите верхнюю границу диапазона")
For x = n To v
For b = 2 To x \ 2
If x Mod b = 0 Then fl = 1: GoTo 1 Else: fl = 0
Next b
1: If fl = 0 Then k = k + 1 Else
Next x
MsgBox ("количество простых чисел в данном диапазоне=") + Str(k)
End Sub
Среди двухразрядных натуральных чисел найти количество тех,цифры которых являются соседними в натуральном ряду, выяснить сколько из них четных, сколько нечетных.
Sub g()
Dim x As Integer, a As Integer, b As Integer, c As Integer, k As Long
k = 0: kchet = 0: knechet = 0
For x = 11 To 99
a = x Mod 10
b = x \ 10
c = a - b
If c = 1 Or c = -1 Then k = k + 1
Next x
For x = 12 To 98 Step 2
a = x Mod 10
b = x \ 10
c = a - b
If c = 1 Or c = -1 Then kchet = kchet + 1
Next x
For x = 11 To 99 Step 2
a = x Mod 10
b = x \ 10
c = a - b
If c = 1 Or c = -1 Then knechet = knechet + 1
Next x
MsgBox ("среди двухразрядных натуральных чисел количество тех,цифры которых являются соседними в натуральном ряду=") + Str(k)
MsgBox "из них четных " + Str(kchet) + ", нечетных" + Str(knechet)
End Sub
Находит суму цифр числа с клавы, выясняет четная она или нет.
Sub h()
Dim x As Long, a As Long
Dim max As Integer, c As Integer
x = InputBox("Введите целое число")
a = Abs(x): s = 0
While a <> 0
c = a Mod 10
s = s + c
a = a \ 10
Wend
MsgBox "сумма цифр этого числа=" + Str(s)
If s Mod 2 = 0 Then MsgBox "она четная" Else MsgBox "она нечетная"
End Sub
Определяет, является ли число с клавы совершенным.
Sub i()
Dim n As Integer, s As Integer, m As Integer, a As Integer
1: n = InputBox("введите натуральное число, не превышающее 32000")
If n > 32000 Then GoTo 1
s = 0
For m = 2 To n
a = n / m
If n Mod m = 0 Then s = s + a
Next m
If s = n Then MsgBox ("Это число совершенное") Else MsgBox ("Это число не совершенное")
End Sub
Задать с Клавы нижнюю границу (х) диапазона и верхнюю (n). Находит минимальное число, кратное n, из интервала от x до n, и произведение его цифр.
Sub j()
Dim x As Long, n As Long, pr As Integer, a As Integer, z As Integer, c As Integer, i As Integer, y As Integer
a = 0: pr = 1: c = 0: z = 0
1: x = InputBox("введите нижнюю границу диапазона")
n = InputBox("введите верхнюю границу диапазона")
If n - x <= 3 Then MsgBox ("вы ввели недопустимые границы"): GoTo 1
For a = x + 1 To n
If n Mod a = 0 Then z = a: GoTo 3 Else
Next a
3: y = z
While z <> 0
c = z Mod 10
pr = pr * c
z = z \ 10
Wend
If y = 0 Then MsgBox ("в данном интервале нет чисел, кратных n"): GoTo 2
MsgBox ("минимальное число, кратное n, из интервала от x до n =") + Str(y)
MsgBox ("произведение его цифр=") + Str(pr)
2: End Sub
Определяет, является ли число палиндромом.
Sub k()
Dim x As Integer, b As Integer, c As Integer
x = InputBox("Введите натуральное число")
b = x Mod 10
While x <> 0
c = x Mod 10
x = x \ 10
Wend
If b = c Then MsgBox ("это число палиндром") Else MsgBox ("это число не палиндром")
End Sub
Сокращает правильную дробь и выводит новые числитель и знаменатель.
Sub l()
Dim x As Integer, y As Integer, i As Integer, nod As Integer, a As Integer, b As Integer
a = 0: b = 0
x = InputBox("Введите числитель правильной обыкновенной дроби")
y = InputBox("Введите знаменатель")
For i = 1 To x
If x Mod i = 0 And y Mod i = 0 Then nod = i Else
Next i
a = x / nod
b = y / nod
MsgBox ("новый числитель = ") + Str(a) + (", новый знаменатель= ") + Str(b)
End Sub
Сортировка элементов массива по убыванию (из курсовой):
Function AAA(q, w, e, r, t, y)
Dim m As Variant, i As Integer, j As Integer, p As Integer
Dim rez As String
m = Array(q, w, e, r, t, y)
For i = 0 To 5
For j = i + 1 To 5
If m(j) >= m(i) Then p = m(i): m(i) = m(j): m(j) = p
Next j
Next i
rez = Join(m, ",")
AAA = rez
End Function
Чтобы сделать по возрастанию, надо поменять выделенный знак > на <
ЛР №5.
В массиве чисел из 20 элементов от -50 до 50 заменить все отриц. элементы нулями и подсчитать их кол-во. Вывести исходный и конечный массивы.
Sub A()
Dim M(20), I as integer, kol as integer
Pr=” “ : pp=” “: kol=0
For i=1 to 20
M(i)=Int(-50+Rnd*100)
Next i
For i=1 to 20
Pr=Pr+ str (m(i))+ “;”
Next i
Msgbox Pr
Msgbox (“Количество отрицательных элементов = “)+ str(kol)
For i=1 to 20
If M(i)<0 then M(i)=0 and kol=kol+1
Next i
For i=1 to 20
pp=pp+ str (m(i))+ “;”
Next i
Msgbox pp
End sub