A mátrix műveleteknél két fontos szabály:
Két mátrixon az összeadás és a kivonás művelete csak akkor végezhető el, ha azok azonos méretűek.
A és B mátrixok között a szorzás művelete csak akkor értelmezhető, ha A-nak ugyanannyi oszlopa van, mint ahány sora B-nek.
Alkalmazásunk Form-ján 3 db 5x5–ös mátrixra van szükségünk, amelyeket TextBox kontrolok segítségével jelenítünk meg. A TextBox-okat dinamikusan hozzuk létre a Form1 Load eseményében. A létrehozott kontrolokat egy-egy ArrayList objektumba fűzzük fel.
private ArrayList mt1 = new ArrayList();
...
for (int i = 0; i <= 4; i++)
for (int j = 0; j <= 4; j++)
{
TextBox t = new TextBox();
t.Parent = this;
t.Left = 8 + j * 33;
t.Top = 33 + i * 21;
t.Width = 33;
t.Text = (i + j).ToString();
mt1.Add(t);
}
A négy végrehajtható műveletet a megfelelő nyomógombok Click eseményeiben programozzuk le.
Az első lépés mind a négy műveletnél közös. Törölnünk kell az eredménymátrix tartalmát.
TextBox t;
for (int i = 0; i < 25; i++)
{
t = (TextBox) mt3[i];
t.Text = "";
}
Összeadásnál és kivonásnál a két mátrix megfelelő indexű elemeit össze kell adnunk, vagy ki kell vonnunk egymásból.
Ha mátrixot szorzunk számmal, akkor csak az első mátrixra van szükségünk. Minden egyes elemét meg kell szoroznunk a megadott számmal, külön-külön. Az eredmény mátrix mérete megegyezik az alapmátrixéval.
A legbonyolultabb művelet, hogy mátrixot szorozzunk mátrixszal.
Ebben az esetben meg kell határoznunk a két mátrix sorainak és oszlopainak számát. A szorzás csak a fentebb említett szabály teljesülésekor végezhető el.
A szorzás elvégzéséhez három egymásba ágyazott for ciklusra van szükségünk.
if (maxColumn1 > -1 && maxRow1 > 0)
{
for (int i = 0; i <= maxRow1; i++)
for (int j = 0; j <= maxColumn2; j++)
{
double sum = 0;
for (int k = 0; k <= maxColumn1; k++)
{
double d =0;
t = (TextBox) mt1[i * 5 + k];
d = Convert.ToDouble(t.Text);
t = (TextBox) mt2[k * 5 + j];
sum += d * Convert.ToDouble(t.Text);
t = (TextBox) mt3[i * 5 + j];
t.Text = sum.ToString();
}
}
}