[tablica] dynamiczna dwuwymiarowa

0

witam, mam chyba dosc prosty problem, mianowicie potrzebuje zadeklarowac dwuwymiarowa tablice dynamiczna o polach int. Wielkosc tablicy bedzie podawana pozniej przez uzytkownika - zawsze w formie NxN (kwadrat).

int szach[][] = (int )malloc(Nsizeof(int));

main.c:8: error: array type has incomplete element type

domyslam sie ze rezerwuje pamiec tylko na pierwsze pole. :) prosze o pomoc zawsze omijalem pamiec dynamiczna z daleka i widac skutki.

0

Jezeli juz to:

int ** szach = (int**) malloc(N*sizeof(int*));
for(int i = 0; i < 0; i++)
  szach[i] = (int *)malloc(N*sizeof(int));'

Ale sprawdz, bo ja zazwyczaj uzywam new, nie malloc. Na forum bylo sporo przykladow, czesc pewnie szybszych i lepszych.

0

johny a mozesz napisac ten sposob z new? na forum owszem sa jakies przyklady ale nie moge wyciagnac tego co potrzebuje. :/ z gory dzieki

0

No to podobnie:

int** szach = int int*[N];
for(int i = 0; i < N; i++)
  szach[i] = new int[N];
0

7 int* szach = int int[N];
8 for(int i = 0; i < N; i++)
9 szach[i] = new int[N];

main.c:7: error: expected expression before ‘int’
main.c:8: error: expected identifier or ‘(’ before ‘for’
main.c:8: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘<’ token
main.c:8: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘++’ token

i o co tutaj chodzi?:/

0

Oj już sie pomylić nie wolno ?
Korekta:

int** szach = new int*[N];
for(int i = 0; i < N; i++)
{
  szach[i] = new int[N];
}

Po użyciu zwalniamy pamięć:

     for (int i = 0; i < N ;i++)
     {
           delete [] szach[i] ;
     }
     delete [] szach
0

Sorry, machnalem sie - tak to jest jak sie pisze i mysli o 3 nastepnych sprawach. Poprawny kod to:

int** szach = new int*[N];
for(int i = 0; i < N; i++)
  szach[i] = new int[N];

@dzejo - dzieki za poprawke

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0