Macierze najczęściej zapisuje się w postaci prostokątnej tablicy. Możliwe jest również zapisanie ich w postaci wektora długość równej ilości wierszy macierzy pomnożonej przez ilość kolumn macierzy. Najbardziej popularną metodą jest przechowywanie macierzy w tablicach podwójnie indeksowanych czyli prościej mówiąc dwuwymiarowych. Jednak prócz samej tabeli musimy przechowywać wielkość tabeli: ilość wierszy i kolumn. W celu uproszczenia zapisu użyjemy struktury.
W strukturze będziemy przechowywać 2D listę zawierającą liczby w zmiennej data, ilość wierszy w n oraz ilość kolumn w m.
Nowo utworzona macierz będzie miała zadaną wielkość przez argumenty n i m. Zwrócimy wskaźnik na nowo utworzoną macierz, a wszystkie jej liczby ustawimy na 0.
(2.) Przy tworzeniu uzyskujemy wskaźnik na macierz, więc aby zmodyfikować pola danych nowo utworzonej macierzy to będziemy używać "->" zamiast "."(, którą używamy dla typ, a nie typ*). (3. - 4.) Następnie przypisujemy wielkość naszej zmiennej macierzy. (5.) Zmienna table to nasza 2D tablica, którą na sam koniec przekażemy do matrix. (7.) Następnie dla każdego wiersza tworzymy listę double i (9.) każdy element ustawiamy na 0. Na koniec iteracji (11.) przekazujemy wskaźnik do zmiennej table i (12.) zwracamy macierz.
Bardzo często przy macierzach omawia się macierze kwadratowe, dlatego warto uwzględnić szybki i prosty sposób na tworzenie macierzy kwadratowych.
Napiszmy jeszcze funkcję utworzMacierzJednostkowa(), która stworzy macierz jednostkową, która na swojej głównej diagonali ma same jedynki. Prościej mówiąc każda liczba o współrzędnych x i y, gdzie x = y ma wartość 1.
Załóżmy, że chcemy napisać funkcję, która usunie i-ty wiersz macierzy. Oznacza to, że musimy utworzyć nową tablicę wielkości n - 1 × m. Następnie przepisać każdy wiersz po kolei pomijając wiersz, który chcemy usunąć.
Należy pamiętać, że nieużywaną pamięć należy zwolnić, dlatego przed (9.) przypisaniem nowej listy liczb (8.) usuwamy starą po przepisaniu. Linijki (3. - 6.) można przepisać jako jedną pętle for z dodatkowym warunkiem if. Jest to jednak bardziej skomplikowane i mniej efektywne. Na koniec należy pamiętać, że rozmiar macierzy się zmienił co oznacza, że (10.) ilość wierszy macierzy należy zmniejszyć.
Usuwanie kolumny macierzy jest trochę bardziej skomplikowane, ale opiera się na identycznym schemacie:
Mnożenie macierzy przez skalar oznacza pomnożenie każdej liczby w macierzy przez skalar:
Struktura Matrix jest naszym wytworem i standardowe biblioteki nie potrafią wypisać jej na konsole. Jednak możemy napisać specjalną funkcje, która nam to umożliwi:
Funkcja używa tu specjalnego znaku "\t", który wypisuje tabulator, aby macierz była wyrównana w kolumnach.
Poniższy fragment kodu prezentuje użycie niektórych napisanych funkcji:
Napisz funkcję sumujWszystko(), która zsumuje wszystkie liczby w macierzy i zwróci wynik jako liczbę rzeczywistą.
Napisz funkcję lub konstruktor, który pozwoli użytkownikowi wprowadzić macierz czyli: