A te macierze masz statycznego czy dynamicznego rozmiaru? Mógłbyś podać to co już napisałeś - nie trzeba by wszystkiego od początku omawiać... Według mnie użyte powinny być macierze o rozmiarze dynamicznym, więc przykład deklaracji typu takiej tablicy:
type
TMyArray = array of Integer;
Teraz jej wypełnianie randomowymi liczbami; Możesz do tego celu wykorzystać funkcję, albo procedurę:
function FillArray(): TMyArray;
begin
SetLength(Result, {rozmiar});
// wypełnienie losowymi liczbami
end;
procedure FillArray(out AArray: TMyArray);
begin
SetLength(AArray, {rozmiar});
// wypełnienie losowymi liczbami
end;
Obie służą do tego samego - różni je jedynie sposób wywołania; W drugiej wersji (w procedurze) użyłem modyfikatora Out, dlatego że zadaniem procedury ma być wpisanie danych do tablicy, a nie ich odczyt; Poniżej przykład wywołania powyższych (wybierz sobie jeden sposób):
var
LArray: TMyArray;
begin
LArray := FillArray(); // użycie funkcji
FillArray(LArray); // użycie procedury
Funkcja wypełniająca macierz była prosta do napisania,jednak mam problem z drugą,otóż jak przekazać tablicę wyrzuconą przez poprzednią funkce do tej dodającej?
Jeżeli dana funkcja lub procedura ma sumować dwie macierze to znów masz kilka rozwiązań; Albo napisz sobie funkcję, która przyjmuje w parametrach dwie macierze do sumowania, a w rezultacie zwraca macierz wynikową:
function SumArrays(const AFirst, ASecond: TMyArray): TMyArray;
albo napisz sobie procedurę, która w parametrach przyjmie dwie wejściowe macierze do sumowania, a w trzecim parametrze zwróci macierz wynikową:
procedure SumArrays(const AFirst, ASecond: TMyArray; out ADest: TMyArray);
Wybierz co chcesz; W razie czego możesz skorzystać z dwuwymiarowej macierzy dynamicznej (a właściwie to dynamicznej tablicy dynamicznych tablic), jeśli wolisz w ten sposób:
type
TMyArray = array of array of Integer;