Witam,
mam problem ponieważ nie mam zielonego pojęcia dlaczego mi wyrzuca błąd.
double **macierz = new double *[n];
for(int i = 0; i < n; i++)
macierz[i] = new double [n];
Ulozenie_macierzy(&macierz n, 0);
alokacja macierzy i wywołanie jej funkcji
teraz funkcja:
void Ulozenie_macierzy(double ***macierz, int n, int rzad) //rzad rowny 0 jak widac w tym przypadku
{
int rzad_podmieniany = rzad+1;
double *wektor_temp = new double[n];
double *wektor_temp2 = new double[n];
for(int i = 0; i < n; i++)
{
wektor_temp[i] = *macierz[rzad][i]; //przez to przechodzi macierz[0][0]
wektor_temp2[i] = *macierz[rzad+1][i]; //tu się pluje, nie wiem dlaczego skoro przez pierwsze przeszło macierz[1][0]
}
for(int i = 0; i < n; i++)
{
*macierz[rzad][i] = wektor_temp2[i];
*macierz[rzad_podmieniany][i] = wektor_temp[i];
}
}
Wiem, że nie potrzebnie teraz tworzę drugi wektor_temp.. ale stworzyłem go przed chwilą bo myślałem że ma problem z przepisaniem bezpośrednio *macierz[rzad][i] = *macierz[rzad+1][i]; i potem z wektor_tempa do macierz[rzad+1].
I tak.. oczywiście macierz jest rozmiarów co najmniej 2x2, więc nie ma mowy że nie istnieje macierz[1][x].
Jak używam wyświetlania poprzez dwa fory i cout << macierz[i][j] to wszystko jest git, więc dobrze się alokuje i zapełnia.
Unhandled exception at 0x009c1a71 in Gauss.exe: 0xC0000005: Access violation reading location 0xcccccccc.
Może ogólnie źle że przesyłam adres podwójnego wskaźnika? Ale jak wtedy przesłać podwójną tablicę by zmiany były trwałe poza funkcją? Nie chcę używać niczego globalnego.