Przykład programu realizującego dodawanie oraz mnożenie macierzy. Użytkownik za pomocą konsoli wprowadza dane określające macierze: w pierwszej kolejności rozmiar, a następnie wartości liczbowe z których dana macierz ma się składać.

Aplikacja wykonuje działania dodawania oraz mnożenia macierzy, a następnie zapisuje wyniki do pliku *.txt.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace cw._6_macierze
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 0,
                b = 0,
                c = 0,
                d = 0;
 
            Console.ForegroundColor = ConsoleColor.Yellow;
            //Console.WriteLine("Buffor: {0}", Console.BufferHeight);
 
            Console.WriteLine("Podaj rozmiar pierwszej macierzy (zatwierdzajac klawiszem ENTER): ");
            a = int.Parse(Console.ReadLine());
            b = int.Parse(Console.ReadLine());
 
            Console.WriteLine("Podaj rozmiar drugiej macierzy (zatwierdzajac klawiszem ENTER): ");
            c = int.Parse(Console.ReadLine());
            d = int.Parse(Console.ReadLine());
 
            Console.WriteLine("M1[{0}][{1}], M2[{2}][{3}]", a, b, c, d);
 
            int[,] m1 = new int[a, b];
            int[,] m2 = new int[c, d];
            int[,] m1m2 = new int[a, b];
 
            Console.WriteLine("Macierz M1 sklada sie z: {0} liczb, podaj je (zatwierdzajac klawiszem ENTER):", a * b);
            for (int i = 0; i < a; i++)
                for (int j = 0; j < b; j++)
                {
                    m1[i, j] = int.Parse(Console.ReadLine());
                }
 
            Console.WriteLine("Macierz M2 sklada sie z: {0} liczb, podaj je (zatwierdzajac klawiszem ENTER):", c * d);
            for (int i = 0; i < c; i++)
                for (int j = 0; j < d; j++)
                {
                    m2[i, j] = int.Parse(Console.ReadLine());
                }
 
            Console.Clear();
            Console.WriteLine("M1: ");
            for (int i = 0; i < a; i++)
            {
                for (int j = 0; j < b; j++)
                {
                    Console.Write("{0} ", m1[i, j]);
                }
                Console.WriteLine("");
            }
 
            Console.WriteLine("\nM2: ");
            for (int i = 0; i < c; i++)
            {
                for (int j = 0; j < d; j++)
                {
                    Console.Write("{0} ", m2[i, j]);
                }
                Console.WriteLine("");
            }
 
            #region Dodawanie macierzy
            Console.WriteLine("\nDodanie macierzy: ");
            for (int i = 0; i < a; i++)
                for (int j = 0; j < b; j++)
                {
                    m1m2[i, j] = m1[i, j] + m2[i, j];
                }
 
            Console.WriteLine("\nM1 + M2:");
            for (int i = 0; i < a; i++)
            {
                for (int j = 0; j < b; j++)
                {
                    Console.Write("{0} ", m1m2[i, j]);
                }
                Console.WriteLine("");
            }
            #endregion
 
            #region Mnożenie macierzy
            Console.WriteLine("\nMnozenie macierzy:");
            for (int i = 0; i < a; i++)
            {
                for (int k = 0; k < d; k++)
                {
                    for (int j = 0; j < b; j++)
                    {
                        m1m2[i, k] += m1[i, j] * m2[j, k];
                    }
                }
            }
 
            Console.WriteLine("\nM1 x M2: ");
            for (int i = 0; i < a; i++)
            {
                for (int k = 0; k < d; k++)
                {
                    Console.Write("{0} ", m1m2[i, k]);
                }
                Console.WriteLine("");
            }
            #endregion
 
            #region Zapis do pliku
            FileStream fs = new FileStream("plik.txt", FileMode.Create);
            //FileStream fs = new FileStream("plik.txt", FileMode.Append);
            using (StreamWriter zapisz_out = new StreamWriter(fs)) 
                //using() - odzyszczanie, zapisz_out.Close = zapisz_out.Dispose()
            {
                for (int i = 0; i < a; i++)
                {
                    for (int k = 0; k < d; k++)
                    {
                        zapisz_out.Write("{0} ", m1m2[i, k]);
                    }
                    zapisz_out.WriteLine("");
                }
            }
            fs.Close();
            #endregion
            Console.ReadKey();
        }
    }
}