tablica dwuwymiarowa

Odpowiedz Nowy wątek
2014-12-22 19:32
Ktokolwiek
0

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

Pozostało 580 znaków

2014-12-22 20:20
2014-12-22 20:46
Wybitny Lew
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;
}

Pozostało 580 znaków

2014-12-22 20:49
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

edytowany 1x, ostatnio: n0name_l, 2014-12-22 20:51

Pozostało 580 znaków

2014-12-22 20:53
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}
};
edytowany 1x, ostatnio: twonek, 2014-12-22 21:04
A co to ma wspólnego z tematem? Post do kosza. - Endrju 2014-12-22 20:54
Zapoznaj się z opcją "Cytuj". - Endrju 2014-12-22 20:58
Jak pisałem nie było posta @n0name_l, a cytowanie tuż pod postem jest jeszcze gorsze. - twonek 2014-12-22 20:59
To jest jeszcze opcja "Edytuj". Zamiast to tłumaczyć w komentarzach już dawno byś naprawił. - Endrju 2014-12-22 21:01
Naprawiłbym, gdybym nie musiał Ci tłumaczyć, dlaczego post jest taki a nie inny. - twonek 2014-12-22 21:02

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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