d

🧩 Syntax:
using System;

class Zadanie5
{
    static void Main()
    {
        // Testowanie dodawania macierzy
        int[,] macierzA2x2 = { { 1, 2 }, { 3, 4 } };
        int[,] macierzB2x2 = { { 5, 6 }, { 7, 8 } };
        int liczbaKrokow;
        int[,] wynikDodawania = DodajMacierze(macierzA2x2, macierzB2x2, out liczbaKrokow);
        Console.WriteLine($"Kroki dodawania 2x2: {liczbaKrokow}");

        // Testowanie mnożenia macierzy
        int[,] macierzA2x3 = { { 1, 2, 3 }, { 4, 5, 6 } };
        int[,] macierzB3x2 = { { 7, 8 }, { 9, 10 }, { 11, 12 } };
        int[,] wynikMnozenia = PomnozMacierze(macierzA2x3, macierzB3x2, out liczbaKrokow);
        Console.WriteLine($"Kroki mnożenia [2x3]*[3x2]: {liczbaKrokow}");

        // Testowanie transpozycji
        int[,] macierz = { { 1, 2, 3 }, { 4, 5, 6 } };
        int[,] transponowana = TransponujMacierz(macierz);
        Console.WriteLine("Macierz transponowana:");
        WypiszMacierz(transponowana);
    }

    static int[,] DodajMacierze(int[,] macierzA, int[,] macierzB, out int liczbaKrokow)
    {
        int wiersze = macierzA.GetLength(0);
        int kolumny = macierzA.GetLength(1);
        int[,] wynik = new int[wiersze, kolumny];
        liczbaKrokow = 0;

        for (int i = 0; i < wiersze; i++)
        {
            for (int j = 0; j < kolumny; j++)
            {
                wynik[i, j] = macierzA[i, j] + macierzB[i, j];
                liczbaKrokow++;
            }
        }
        return wynik;
    }

    static int[,] PomnozMacierze(int[,] macierzA, int[,] macierzB, out int liczbaKrokow)
    {
        int wA = macierzA.GetLength(0);
        int kA = macierzA.GetLength(1);
        int wB = macierzB.GetLength(0);
        int kB = macierzB.GetLength(1);
        int[,] wynik = new int[wA, kB];
        liczbaKrokow = 0;

        for (int i = 0; i < wA; i++)
        {
            for (int j = 0; j < kB; j++)
            {
                int suma = 0;
                for (int k = 0; k < kA; k++)
                {
                    suma += macierzA[i, k] * macierzB[k, j];
                    liczbaKrokow++;
                }
                wynik[i, j] = suma;
            }
        }
        return wynik;
    }

    static int[,] TransponujMacierz(int[,] macierz)
    {
        int wiersze = macierz.GetLength(0);
        int kolumny = macierz.GetLength(1);
        int[,] wynik = new int[kolumny, wiersze];

        for (int i = 0; i < wiersze; i++)
            for (int j = 0; j < kolumny; j++)
                wynik[j, i] = macierz[i, j];
                
        return wynik;
    }

    static void WypiszMacierz(int[,] macierz)
    {
        for (int i = 0; i < macierz.GetLength(0); i++)
        {
            for (int j = 0; j < macierz.GetLength(1); j++)
                Console.Write(macierz[i, j] + "\t");
            Console.WriteLine();
        }
    }
}