| A programozási mintafeladatokhoz az alábbi segédszubrutinokat fogjuk használni (illetve a programozási feladatoknál is ezeket kell majd használni). |
'Adott számú (Mennyit), véletlen, a [Tol, Ig] intervallumba eső 'egész szám generálása egy tömbbe (Mibe), adott Seed érték mellett Sub Szamokat_General(Mibe() As Integer, Mennyit As Integer, _ Tol As Integer, Ig As Integer, Seed As Integer) Dim i As Integer, db As Integer Rnd -1 Randomize Seed db = Ig - Tol + 1 For i = 1 To Mennyit Mibe(i) = Int(Rnd * db) + Tol Next End Sub |
'Adott hosszú, véletlenszerű szöveges adat (sztring) generálása 'betűkből, számjegyekből és egyéb karakterekből Function Szoveget_General(Hossz As Integer, Seed As Integer) As String Const Kisbetuk = "aábcdeéfghiíjklmnoóöőpqrstuúüűvwxyz" Const Szamjegyek = "0123456789" Const Egyeb = "'!%$=<>()\/[]#&@{}<,;:.?+-_ " Dim i As Integer, db As Integer, Karakterek As String, st As String Rnd -1 Randomize Seed Karakterek = Kisbetuk + UCase(Kisbetuk) + Szamjegyek + Egyeb db = Len(Karakterek) st = "" For i = 1 To Hossz st = st + Mid(Karakterek, Int(Rnd * db) + 1, 1) Next Szoveget_General = st End Function |
'Prímszám vizsgálat Function Prim(a As Long) As Boolean Dim o As Long, b As Long, van As Boolean If a <= 1 Then Prim = False Else o = 2: van = False: b = Int(Sqr(a)) While o <= b And Not van If a Mod o = 0 Then van = True Else o = o + 1 End If Wend Prim = Not van End If End Function |
'Relatív prím vizsgálat Function RelPrim(a As Long, b As Long) As Boolean Dim o As Long, c As Long, van As Boolean If a <= b Then c = a Else c = b o = 2: van = False While o <= c And Not van If a Mod o = 0 And b Mod o = 0 Then van = True Else o = o + 1 End If Wend RelPrim = Not van End Function |
Mintafeladat 1 |
A Szamokat_General szubrutin segítségével generáljunk 5 darab egész számot az [1, 10] intervallumban 1-es Seed értékkel, majd határozzuk meg a generált adatok minimumát, maximumát, összegét és átlagát! |
Sub Mintafeladat1() 'Az adatok száma Const n = 5 'Az adatokat tároló tömb Dim a(1 To n) As Integer 'Az eredményeket tároló változók Dim Min As Integer, Max As Integer, Osszeg As Long, Atlag As Single 'Segédváltozó Dim i As Integer 'Adatok generálása Call Szamokat_General(a, n, 1, 10, 1) 'Adatok kiírása az Immediate ablakba (egy sorba) Debug.Print "Az adatok:"; For i = 1 To n Debug.Print a(i); Next Debug.Print 'Az adatok feldolgozása 'Legkisebb, legnagyobb elem 'Megjegyezzük az első elemet Min = a(1): Max = a(1) 'Megvizsgáljuk a többit, van-e kisebb, van-e nagyobb? For i = 2 To n If a(i) < Min Then 'Van egy kisebb, módosul az eredmény Min = a(i) End If If a(i) > Max Then 'Van egy nagyobb, módosul az eredmény Max = a(i) End If Next 'Kiírjuk az eredményt Debug.Print "Legkisebb:"; Min Debug.Print "Legnagyobb:"; Max 'Megoldás munkalapfüggvénnyel Debug.Print "Legkisebb:"; WorksheetFunction.Min(a) Debug.Print "Legkisebb:"; WorksheetFunction.Small(a, 1) Debug.Print "Legnagyobb:"; WorksheetFunction.Max(a) Debug.Print "Legnagyobb:"; WorksheetFunction.Large(a, 1) 'Összeg 'Kezdőérték Osszeg = 0 'Minden elemet hozzáadunk For i = 1 To n Osszeg = Osszeg + a(i) Next 'Kiírjuk az eredményt Debug.Print "Összeg:"; Osszeg 'Átlag Atlag = Osszeg / n 'Kiírás 1 tizedesjeggyel Debug.Print "Átlag:" + Format(Atlag, "0.0") 'Megoldás munkalapfüggvénnyel Debug.Print "Átlag:" + Format(WorksheetFunction.Average(a), "0.0") MsgBox "Az adatok és az eredmények az Immediate ablakban láthatók!" End Sub |
Mintafeladat 2 |
A Szoveget_General szubrutin segítségével generáljunk 10 karakter hosszú szöveges adatot 2-es Seed értékkel, majd határozzuk meg a kapott adatban található angol betűk darabszámát! |
Sub Mintafeladat2() 'A szöveg hossza Const n = 10 'A feldolgozandó szöveg Dim st As String 'Az eredményt tároló változó Dim db As Integer 'Segédváltozók Dim i As Integer, kar As String 'Adatgenerálás st = Szoveget_General(n, 2) 'Adat kiírása az Immediate ablakba Debug.Print "Az adat:"; st 'Az adat feldolgozása 'Darabszám (a szövegben található angol betűk darabszáma) 'Kezdőérték db = 0 'A szöveg minden karakterét megvizsgáljuk For i = 1 To Len(st) 'A kar változóba a szöveg i. karakterét kar = Mid(st, i, 1) 'Az adott karakter (kar) vizsgálata (angol betű-e?) If kar >= "A" And kar <= "Z" Or kar >= "a" And kar <= "z" Then 'Angol betű, növeljük a darabszámot db = db + 1 End If Next 'Kiírjuk az eredményt Debug.Print "Angol betűk száma:"; db MsgBox "Az adat és az eredmény az Immediate ablakban látható!" End Sub |
Mintafeladat 3 |
A Prim függvény segítségével határozzuk meg az [1, 10] intervallumba eső prímek darabszámát! |
Sub Mintafeladat3() Const Mettol = 1 Const Meddig = 10 Dim i As Long, db As Long, st As String 'Kezdőérték db = 0 'A prímek kiírásához st = "" For i = Mettol To Meddig If Prim(i) Then db = db + 1 'A prímek kiírásához st = st + " " & i End If Next 'A prímek kiírása Debug.Print "Prímek:"; st 'Az eredmény kiírása Debug.Print "Darabszám:"; db MsgBox "Az eredmény az Immediate ablakban látható!" End Sub |