Skocz do zawartości

Recommended Posts

Napisano

Cześć,

Mam pewien problem gdyż stworzyłem macierz za pomoą konstrukcji:

double** wyzn;
wyzn=new double*[3];
  for(int i=0;i<3;i++)
    {
    wyzn[i]=new double[3];
    }

przekazuje tą macierz do funkcji:

double wyznacznik(double** tab, int i, int j)

gdzie i-ity wiersz , j-jota kolumna

I teraz w tej funkcji chciałbym się dostać do itego wiersza i jtejkolumny.

Nie było problemu z tablicą jednowymiarową gdyż odwołanie do danej komórki wyglądało tak :

*(tab+i) = 1000;

gdzie i- ita komórka

proszę o pomoc :)

Napisano

Odwołanie które chcesz zrobić będzie wyglądało tak:

 *(*(tab+i)+j) = 1000;

Ale polecam nauczyć się zapisu tablicowego (jest czytelniejsz):

tab[i][j] = 1000;

 

Napisano

Wcześniej wspomniałem o użyciu zapisu tablicowego w kontekście wskażników, najlepiej pokaże na przykładzie:

double wyznacznik(double** tab, int i, int j)
{
        return tab[i][j] = 1000;
}

Tak jest czytelniej niż tak:

double wyznacznik(double** tab, int i, int j)
{
     return  *(*(tab+i)+j)=1000;
}

Można też pozbyć się całkowicie wskaźników i pracować na samych tablicach. Aby przekazać taka tablicę do funkcji musisz określić wcześniej jej wielkość, przykład:

double usatwTab(double tab[10][10], int i, int j)
{
     return tab[i][j] = 2.5;
}

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...