tablica dwuwymiarowa

0

Jak w C dynamicznie zaalokować tablicę dwuwymiarową?
powiedzmy:
int tablica[k][m];

0

Mam taki problem z tablicami, nie wiem dlaczego w drugiej kolumnie mam same 0, jak wstawiłem 75 i 7

Zdjęcie ----> http://zapodaj.net/cb3a3e5112a08.jpg.html

Mój kod

 #include <stdio.h>
#include <math.h>

int main()
{
int tab[2][2]={
    {5},{9},
    {75},{7}};
    
int i,j;

for(i=0;i<2;i++)            
    {
                    for(j=0;j<2;j++)
                    {printf("%d",tab[i][j]);
                    printf(" ");               
                    }
                    printf("\n");                 
    }
printf(" "); 

system("pause");
return 0;
}
1

Tablica 2 wymiarowa, to tablica 1 wymiarowa, ktorej rozmiar jest iloczynem ilosci wierszy i kolumn, wiec wyglada to mniej-wiecej tak:

typedef struct {
	unsigned w, h;
	int* data;
} IntArray2Dim;

Zeby sie dalo tego uzywac w miare normalnie, mozemy zdefiniowac jeszcze kilka funkcji pomocniczych.

IntArray2Dim create(unsigned w, unsigned h) {
	IntArray2Dim array;
	array.w = w;
	array.h = h;
	array.data = (int*) calloc(w * h, sizeof(int)); 
	return array;
}

int get(IntArray2Dim arr, unsigned i, unsigned j) {
	return arr.data[arr.h * i + j];
}

void set(IntArray2Dim arr, unsigned i, unsigned j, int value) {
	arr.data[arr.h * i + j] = value;
}

void destroy(IntArray2Dim arr) {
	free(arr.data);
}

void print(IntArray2Dim arr) {
	unsigned i, j;
	for(i = 0; i < arr.w; ++i) {
		for(j = 0; j < arr.h; ++j) {
			int value = get(arr, i, j);
			printf("%d ", value);
		}
		putchar('\n');
	}
}

I przyklad uzycia:

int main(void) {
	IntArray2Dim array = create(5, 3);
	set(array, 4, 2, 123);
	set(array, 3, 1, 100);
	set(array, 0, 2, 250);
	print(array);
	destroy(array);
	return 0;
}

http://ideone.com/jB5ha9

0
Wybitny Lew napisał(a):

Mam taki problem z tablicami, nie wiem dlaczego w drugiej kolumnie mam same 0, jak wstawiłem 75 i 7

int tab[2][2] = {
    {5, 9},
    {75, 7}
};

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