Copyright © 2014, Janusz Bonarowski 1
Ć wiczenie VB6.03 Tablica(N,N)_ćwiczenia
Zadanie
Zbudować aplikację, która zapełnia tablicę NxN liczbami przypadkowymi całkowitymi z przedziału <10,20>.
UmoŜliwić zerowanie wskazanego wiersza i wskazanej kolumny.
Efekt wyświetlać w TextBox’się (uwaga: TextBox powinien mieć właściwość Multiline = True).
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). Podobnie postąpimy z rozmiarem tablicy N.
• PoniewaŜ rozmiar tablicy moŜe być zmienny – zdeklaruje my ją na zewnątrz wszystkich procedur bez dokładnego rozmiaru:
Dim tabela(,) As Integer
a konkretny rozmiar zadeklarujemy słowem kluczowym ReDim, po odczytaniu wskazanego rozmiaru ReDim tabela(N - 1, N - 1).
• Wydruki tabeli(,) wykonamy posługując się własną procedurą typu Sub: WydrukTabeli()
• Aby tabela była kwadratowa napiszemy dwie procedury:
txtLiczbaWierszy_TextChanged() i txtLiczbaKolumn_TextChanged(), które wzajemnie „pilnują”, aby liczba kolumn była równa liczbie wierszy.
• 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)))
Copyright © 2014, Janusz Bonarowski 2 Kod aplikacji
Dim tabela(,) As Integer '--- Dim N As Integer
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load 'By liczby losowe były „naprawdę” losowe.
Randomize() End Sub
Private Sub WydrukTabeli()
'Wydruk tabeli do TextBox'u txtWydruk.
Dim wiersz As String Dim iw, ik As Integer wiersz = ""
For iw = 0 To N - 1 For ik = 0 To N - 1
wiersz = wiersz & tabela(iw, ik).ToString & vbTab
' znak tabulacji Next
wiersz = wiersz & vbCrLf Next
txtWydruk.Text = wiersz End Sub
Private Sub txtLiczbaWierszy_TextChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles txtLiczbaWierszy.TextChanged txtLiczbaKolumn.Text = txtLiczbaWierszy.Text
End Sub
Private Sub txtLiczbaKolumn_TextChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles txtLiczbaKolumn.TextChanged txtLiczbaWierszy.Text = txtLiczbaKolumn.Text
End Sub
Private Sub btnRnd_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnRnd.Click ' Zapełnianie tabeli(n,n) liczbami przypadkowymi całkowitymi
' z przedziału <10,20>
Dim iw, ik As Integer Dim min As Integer = 0 Dim max As Integer = 9
N = CInt(txtLiczbaWierszy.Text) ReDim tabela(N - 1, N - 1)
'--- For iw = 0 To N - 1
For ik = 0 To N - 1
tabela(iw, ik) = Int(10 + (Rnd() * (20 - 10 + 1))) '--- Next
Next
Call WydrukTabeli() End Sub
Copyright © 2014, Janusz Bonarowski 3 Private Sub btnZerujWiersz_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnZerujWiersz.Click 'Zerowanie wiersza: NrWiersza (uwaga: licząc od 0 do N-1)
Dim NrWiersza As Integer
NrWiersza = CInt(txtNrWiersza.Text) For i = 0 To N - 1
tabela(NrWiersza, i) = 0 Next
Call WydrukTabeli() End Sub
Private Sub btnZerujKolumne_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnZerujKolumne.Click 'Zerowanie kolumny: NrKolumny (uwaga: licząc od 0 do N-1)
Dim NrKolumny As Integer
NrKolumny = CInt(txtNrKolumny.Text) For i = 0 To N - 1
tabela(i, NrKolumny) = 0 Next
Call WydrukTabeli() End Sub