witam, mam problem ze zrobieniem dynamicznej struktury, głównie z alokacja pamięci
kod struktury:
struct pole {
int wart;
int odk;
} **mapa;
teraz mam problem jak zrobić, żeby żeby utworzyć dynamiczną strukturę? tzn póki co udało mi się zrobić to z samą tablicą 2D:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j; //pomocnicze
int w,k; //wiersze,kolumny
//wczytanie rozmiarów
printf("Liczba wierszy: ");
scanf("%d",&w);
printf("Liczba kolumn: ");
scanf("%d",&k);
int**tab2;
tab2=(int**)malloc(w*sizeof(int*));
for(i=0; i<w; i++){
tab2[i]=(int*)malloc(k*sizeof(int));
//wypełnianie całej tablicy 1
for( j = 0; j < k; ++j)
tab2[i][j]=1;
}
//ramka z 1, srodek 0
for(i = 1; i < w-1; ++i)
for(j = 1; j < k-1; ++j)
tab2[i][j]=0;
//wypisanie
for(i = 0; i < w; ++i) {
for(j = 0; j < k; ++j)
printf("%d ",tab2[i][j]);
printf("\n");
}
//uwolnienie pamieci
for(i=0; i<w; i++)
free(tab2[i]);
free(tab2);
tab2 = NULL;
return 0;
}
i nie umiem tego przerobić, żeby zamiast tablicy użyć struktury. przerobiłem na takie coś (fragment gdzie modyfikowałem kod):
struct pole {
int wart; //9-bomba 0-8 puste
int odk; //czy odkryte pole
} **tab2;
[...]
tab2=(pole**)malloc(w*sizeof(pole*));
for(i=0; i<w; i++){
tab2[i]=(pole*)malloc(k*sizeof(pole));
//wypełnianie całej tablicy 1
for( j = 0; j < k; ++j)
tab2[i][j].wart=1;
}
[...]
}
wyskakuje błąd kompilacji, w miejscu gdzie gdzie alokuje pamięć gdzie taje typ "pole". gdy zostawiam to jako int'y to kompiluje się, ale nie działa. nie wiem jak to powinno być poprawnie, wiec proszę o pomoc :) mam nadzieję, że nie napisałem tego zbyt chaotycznie
pozdrawiam
Koszkaty