Statyczne tablice wielowymiarowe
Typ tablicowy niekoniecznie może być jednowymiarowy. Najprostszym przykładem tablicy wielowymiarowej jest tablica dwuwymiarowa. Jej deklaracja oprócz typu zmiennych przechowywanych w tablicy wymaga podania rozmiaru w każdym wymiarze.
Przykładem tablicy dwuwymiarowej jest tabela określonej ilości wierszy i dwóch kolumnach.
Cel: Napisz aplikację, która będzie przechowywać losowe wartości liczbowe w statycznej tablicy dwuwymiarowej. Utwórz funkcje o argumencie opartym na tablicy dwuwymiarowej wykonujące podstawowe działania matematyczne.

Krok 1. Układ komponentów
- GroupBox- sztuk 1
- TextBox- sztuk 3
- Label- sztuk 2
- Button- sztuk 5
Jedną z kontrolek TextBox przeznacz na wyświetlanie wyników. Tej kontrolce zmień wartość Multiline na True

Wybierz możliwość przewijania zawartości kontrolki poprzez ustawienie ScrollBars na Vertical

Proponowany układ komponentów przedstawia poniższa ilustracja

Krok 2. Deklaracja zmiennych
Deklaracja zmiennej dwuwymiarowej tablicy statycznej przechowującej typ całkowity ma postać
int[,] t;
Uwaga. Odpowiedni rozmiar przypiszemy w dalszej części kodu.
Deklarujemy zmienne lokalne wewnątrz klasy Form
public partial class Form1 : Form
{
int[,] t;
int rozmiar = 0, zakres =100;
Random los = new Random();
public Form1()
Krok 3. Losowe elementy tablicy dwuwymiarowej
W zdarzeniu Click kontrolki button1 wykonamy przypisanie pamięci (rozmiaru) tworzonej tablicy. Wylosujemy kolejne elementy, wstawimy je do tablicy i pokażemy w komponencie TextBox.
Proponowany kod realizujący to zadanie ma postać
private void button1_Click(object sender, EventArgs e)
{
rozmiar = Convert.ToInt16(textBox1.Text);
zakres = Convert.ToInt16(textBox2.Text);
textBox3.Clear();
t = new int [rozmiar,2];
for(int i = 0; i < rozmiar; i++)
{
t[i, 0] = los.Next(zakres);
t[i, 1] = los.Next(zakres);
textBox3.AppendText((i + 1).ToString() + ") " + t[i, 0].ToString() + ";" + t[i, 1].ToString()+Environment.NewLine);
}
}
Skompiluj program i sprawdź efekt działania. Prawidłowo działająca aplikacja zwróci zawartość tablicy

Krok 4. Deklarujemy funkcję wykonującą działania na elementach tablicy
Podany kod funkcji jest przykładem jak należy podawać argument typu tablicowego do ciała funkcji. Funkcja nie zwraca wyniku. Efekt działań zapisywany jest do drugiego argumentu, który jest typem TextBox
void dodawanie(int[,] t,TextBox tb)
{
tb.Clear();
for(int i = 0; i < t.GetLength(0); i++)
{
tb.AppendText((i + 1).ToString() + ") " + t[i, 0].ToString() + "+" + t[i, 1].ToString() +"="+(t[i,0]+t[i,1]).ToString()+ Environment.NewLine);
}
}
Skompiluj program i sprawdź czy nie ma błędów.
Krok 5. Wywołujemy funkcję dodawania
W celu skrócenia kodu, wykorzystamy rzutowanie typu obiektów przypisanych do zdarzenia Click. Rozpoznanie wykonane jest po sprawdzeniu zawartości Tag wybranych kontrolek Button
private void button2_Click(object sender, EventArgs e)
{
Button bt = sender as Button;
switch (bt.Tag)
{
case "+": dodawanie(t, textBox3); break;
}
}
Skompiluj program i sprawdź efekt działania

Ćwiczenie sprawdzające: Wykonaj pozostałe funkcje działań arytmetycznych z uwzględnieniem zabezpieczenia przed dzieleniem przez zero