Copyright © 2014, Janusz Bonarowski 1
Ćwiczenie VB6.03a Tablica 5 na 5 - zerowanie przekątnych
Zadanie
Zbudować aplikację, która zapełnia tablicę 5x5 elementów liczbami przypadkowymi całkowitymi z przedziału
<0,20>. Umożliwić zerowanie głównej przekątnej i drugiej przekątnej.
Efekt wyświetlać w ListBox’się.
Rysunek 1. Propozycja formularza Uwagi
• Aby wszystkie procedury miały dostęp do tabeli z danymi zadeklarujemy ją jako publiczną (tzn. na zewnątrz wszystkich procedur).
• Wydruki tabeli dane(4, 4) wykonamy posługując się własną procedurą typu Sub: drukuj()
• Gdy zamierzamy zapełnić tabelę liczbami rzeczywistymi z przedziału <min, max> stosujemy wzór:
min + (Rnd() * (max - min)),
• Gdy zamierzamy zapełnić tabelę liczbami całkowitymi z przedziału <min, max> stosujemy wzór:
Int(min + (Rnd() * (max - min + 1))), w naszym przypadku, gdy zamierzamy generować liczby przypadkowe z przeniału <0,20>, wzór ten przyjmie postać:
Int(Rnd() * 21)).
Kod aplikacji
Dim dane(4, 4) As Integer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'Aby generator liczb losowych rozpoczynał ich generację również
'w sposób przypadkowy, należy przed jego użyciem zawołać funkcję:
Randomize() End Sub
Copyright © 2014, Janusz Bonarowski 2 Private Sub btnGeneruj_Click(sender As Object, e As EventArgs) _
Handles btnGeneruj.Click 'Zapełnianie tablicy „dane” liczbami przypadkowymi z przedziału <0,20>
'--- Dim i, j As Integer
For i = 0 To 4 'zamiast 4 można też napisać: UBound(dane, 1) For j = 0 To 4 'zamiast 4 można też napisać: UBound(dane, 2) dane(i, j) = Int(21 * Rnd())
Next Next
Call drukuj() End Sub
Private Sub btnZeraGlowna_Click(sender As Object, e As EventArgs) _
Handles btnZeraGlowna.Click 'Wpisz 0 na głównej przekątnej
'--- Dim i, j As Integer
For i = 0 To UBound(dane, 1) dane(i, i) = 0
Next
Call drukuj() End Sub
Private Sub btnZeraDruga _Click(sender As Object, e As EventArgs) _
Handles btnZeraDruga.Click 'Wpisz 0 na drugiej przekątnej
'--- Dim i, j, N As Integer
N = UBound(dane, 1) 'zamiast 4 można też napisać jawnie: N = 4 For i = 0 To N
dane(i, N - i) = 0 Next
Call drukuj() End Sub
Private Sub drukuj()
'Własna procedura drukująca zawartość tabeli dane Dim wiersz As String
ListBox1.Items.Clear() For i = 0 To 4
wiersz = ""
For j = 0 To 4)
wiersz = wiersz & dane(i, j).ToString & vbTab Next
ListBox1.Items.Add(wiersz) Next
End Sub