[tablica] dynamiczna dwuwymiarowa

[tablica] dynamiczna dwuwymiarowa
Freakman
  • Rejestracja: dni
  • Ostatnio: dni
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.

johny_bravo
  • Rejestracja: dni
  • Ostatnio: dni
0

Jezeli juz to:

Kopiuj
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.

Freakman
  • Rejestracja: dni
  • Ostatnio: dni
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

johny_bravo
  • Rejestracja: dni
  • Ostatnio: dni
0

No to podobnie:

Kopiuj
int** szach = int int*[N];
for(int i = 0; i < N; i++)
  szach[i] = new int[N];
Freakman
  • Rejestracja: dni
  • Ostatnio: dni
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?:/

dzejo
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 787
0

Oj już sie pomylić nie wolno ?
Korekta:

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

Po użyciu zwalniamy pamięć:

Kopiuj
     for (int i = 0; i < N ;i++)
     {
           delete [] szach[i] ;
     }
     delete [] szach
johny_bravo
  • Rejestracja: dni
  • Ostatnio: dni
0

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

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

@dzejo - dzieki za poprawke

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.