Tablica dynamiczna dwuwymiarowa C

0

Witam , mam problem z pewnym kawałkiem kodu. Zadeklarowałem tablice dwuwymiarową i zaalokowałem dla niej pamięc , następnie przekazałem jej wskaźnik do funkcji która powinna pobrać elementy do tej tablicy. Jednak po pobraniu elementów do pierwszego wiersza program sie zawiesza. Fragment ten wygląda niemal identycznie jak niektóre przykłady jakie znalazłem w internecie dlatego nie mam pojęcia co jest nie tak. Oto funkcja:

void Wpisanie1M(double **mac1,int w,int k)
{
	int i,j;
	printf("Podaj elementy macierza\n");
	for(i=0;i<w;i++)
	{
		for(j=0;j<k;j++)
		{
			printf("%d,%d: ",i+1,j+1);
			scanf("%lf",&mac1[i][j]);
		}
	}
}

Prosiłbym o wyrozumiałość , dopiero zaczynam swoją przygodę z programowaniem. Z góry dziękuje za pomoc.

0

Funkcja alokująca która wykonuje sie przed tą co podałem w pierwszym poście:
void Alokowanie(double mac,int w,int k)
{
int i;
mac=(double
)malloc(wsizeof(double)+1);
if(mac==NULL)
{
abort();
}
for(i=0;i<w;i++)
{
mac[i]=(double*)malloc(k*sizeof(double)+1);
if(mac[i]==NULL)
{
abort();
}
}
Zeruj(mac,w,k);
}

void Zeruj(double **mac,int w,int k)
{
int i,j;
for(i=0;i<w;i++)
{
for(j=0;j<k;j++)
{
mac[i][j]='\0';
}
}
}

0

Jesli chcesz allokowac w sposob przedstawiony powyzej, to argument winien byc double ***mac; i wtedy analogicznie przerobiona reszta... http://kaczus.ppa.pl/art/Skrzynia_porad,18.html#argpointer

0

4 bajty = 1x int

4x4 = 16

16 bajtów to 4 inty
Lub tablica dwuwymiarowa 4x4 czyli 20 bajtów bo pierwsze 4 bajty mają adresy do komórek zawierających po 4 bajty.

Czaisz baze?

0

Świetny sposób z funkcją zwracającą wskaźnik zamiast alokowanie na danej macierzy w funkcji podany w wyżej wysłanym poradniku. Przerobiłem i wszystko śmiga jak trzeba , dzięki wielkie za pomoc :)

double **Alokuj(int w,int k)
{
    int i;
    double **mac;
    mac=(double**)malloc(w*sizeof(double*));
	if(mac==NULL)
	{
		abort();
	}
	for(i=0;i<w;i++)
	{
		mac[i]=(double*)malloc(k*sizeof(double));
		if(mac[i]==NULL)
		{
			abort();
		}
	}
	Zeruj(mac,w,k);
	return mac;

}

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