Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Компьютерная подготовка (КП). Домашняя работа по В

.doc
Скачиваний:
10
Добавлен:
16.12.2013
Размер:
48.13 Кб
Скачать

Домашка по ВБА №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