VB Problems4

You might also like

You are on page 1of 5

Програмирање 2016/17

Вежби – час 06 (15.03.2017)

1. За внесена вредност 𝑛 > 1, најди ги сите прости броеви од 1 до 3𝑛.

Dim n As Long
Dim i As Variant
Dim j As Variant
Dim p As Integer
Private Sub Form_Activate()
100
n = Val(InputBox("n="))
If n <= 1 Then
GoTo 100
End If
Print "Edinicata ne e nitu prost ";
Print "nitu slozen broj"
For i = 2 To 3 * n
p = 0
For j = 2 To i \ 2
If i Mod j = 0 Then
p = p + 1
Exit For
End If
Next j
If p = 0 Then
Print "Brojot "; i; " e prost broj"
Else
Print "Brojot "; i; " e slozen broj"
End If
Next i
End Sub

2. За внесени вредности 𝑎, 𝑏 > 0, најди ги НЗД(𝑎, 𝑏) и НЗС(𝑎, 𝑏).

Прв начин:
Dim a As Integer
Dim b As Integer
Dim nzd As Integer
Dim nzs As Long
Private Sub Form_Activate()
100
a = Val(InputBox("a="))
b = Val(InputBox("b="))
If a <= 0 Or b <= 0 Then
GoTo 100
Програмирање 2016/17

Вежби – час 06 (15.03.2017)

End If
If a <= b Then
nzd = a
Else
nzd = b
End If
Do While a Mod nzd <> 0 Or b Mod nzd <> 0
nzd = nzd - 1
Loop
Print "NZD("; a; ","; b; ")="; nzd
nzs = a * b / nzd
Print "NZS("; a; ","; b; ")="; nzs
End Sub

Втор начин (Наоѓање на НЗД на два броја со користење на Евклидски алгоритам):


Dim a As Integer
Dim b As Integer
Dim m As Integer
Dim n As Integer
Dim p As Integer
Dim r As Integer
Dim nzd As Integer
Dim nzs As Long
Private Sub Form_Activate()
100
a = Val(InputBox("a="))
b = Val(InputBox("b="))
If a <= 0 Or b <= 0 Then
GoTo 100
End If
If a < b Then
p = a: a = b: b = p
End If
m = b
n = a
Do While b <> 0
r = a Mod b
a = b: b = r
Loop
nzd = a
Print "NZD("; a; ","; b; ")="; nzd
nzs = n * m / nzd
Print "NZS("; n; ","; m; ")="; nzs
Програмирање 2016/17

Вежби – час 06 (15.03.2017)

End Sub

3. За внесени вредности 𝑛 ≥ 1 и 𝑑 ≠ 0, најди ги сите 𝑛 цифрени броеви чија сума од


цифри е делива со 𝑑. Испечати по 6 броеви кои ги задоволуваат бараните својства, во
еден ред.

Dim d As Integer
Dim n As Integer
Dim suma As Integer
Dim br As Integer
Dim i As Variant
Dim m As Variant
Private Sub Form_Activate()
100
d = Val(InputBox("d="))
If d = 0 Then
MsgBox ("Delitelot d treba da bide razlicen od 0")
GoTo 100
End If
MsgBox ("Brojot n e brojot na cifri")
200
n = Val(InputBox("n="))
If n < 1 Then
GoTo 200
End If
br = 0
For i = 10 ^ (n - 1) To 10 ^ n - 1
m = i
suma = 0
Do While m <> 0
c = m Mod 10
suma = suma + c
m = m \ 10
Loop
If suma Mod d = 0 Then
Print i; ",";
br = br + 1
If br > 6 Then
Print
br = 0
End If
End If
Next i
Програмирање 2016/17

Вежби – час 06 (15.03.2017)

End Sub

4. а) Најди го најмалиот трицифрен број кој е еднаков на сумата од кубовите на неговите


цифри.

Dim i As Integer
Dim c As Integer
Dim m As Integer
Dim suma As Long
Private Sub Form_Activate()
For i = 100 To 999
m = i
suma = 0
Do While m <> 0
c = m Mod 10
suma = suma + c ^ 3
m = m \ 10
Loop
If i = suma Then
Print "Toa e brojot "; i;
Exit For
End If
Next i
End Sub

б) Најди го најголемиот четирицифрен број со истите својства.

Dim i As Integer
Dim c As Integer
Dim m As Integer
Dim suma As Long
Private Sub Form_Activate()
For i = 999 To 100 Step -1
m = i
suma = 0
Do While m <> 0
c = m Mod 10
suma = suma + c ^ 3
m = m \ 10
Loop
If i = suma Then
Print "Toa e brojot "; i;
Exit For
Програмирање 2016/17

Вежби – час 06 (15.03.2017)

End If
Next i
End Sub

Задачи за вежбање:
1. За внесена вредност 𝑛 > 3, најди го најголемиот 𝑛 цифрен број чиј збир од квадратите
на цифрите е 2 пати поголем од производот на неговите цифри.
2. За внесена вредност 𝑛 ≥ 3, најди ги сите 𝑛 цифрени броеви кои не ја содржат цифрата
0 во својот запис и збирот и производот од цифрите во нивниот запис се заемно прости
броеви, односно нивниот најголем заеднички делител е еднаков на 1. (Пр. ако 𝑛 = 3,
тогаш бројот 113 не ја содржи цифрата 0, збирот на неговите цифри е 1 + 1 + 3 = 5,
производот на неговите цифри е 1 ∙ 1 ∙ 3 = 3 и тие се заемно прости броеви, бидејќи
НЗД(3,5)=1.

You might also like