logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[C++] Jak dynamicznie zdefiniować kwadratową tablicę 2D w C++?

dinos 20 Lis 2003 11:07 11351 5
REKLAMA
  • #1 407004
    dinos
    Poziom 15  
    Posty: 223
    Ocena: 4
    witam,
    jak zdefiniowac dynamicznie tablice dwuwymiarowa kwadratowa w C++?

    //dla jednowymiarowej tak dziala
    cout<<"podaj rozmiar: ";
    int rozmiar;
    cin>>rozmiar;
    int *tablica=new int[rozmiar];

    //a jak zrobic zeby powstala tablica[i][j] gdzie i=j ?
    pozdrawiam


    Zamykam temat. - arnoldziq
  • REKLAMA
  • #2 407058
    h-doc
    Poziom 27  
    Posty: 1208
    Pomógł: 57
    Ocena: 21
    w ANSI to robisz tak:

    #include <malloc.h>
    typedef int wektor[1];
    void main()
    {
    int x=10, y=10;
    wektor* tablica = (wektor*)malloc(sizeof(int)*x*y);
    }

    pozdro
  • REKLAMA
  • #3 437169
    TronDark
    Poziom 12  
    Posty: 10
    Pomógł: 2
    int **tablica = new int * [i];
    for (int t = 0 ; t < i ; t++)
    tablica[t] = new int[j];

    gdzie i,j to wielkość tablicy, używanie takiej tablicy nie rożni się od tej zadeklarowanej statycznie.
  • REKLAMA
  • #4 446668
    Gavian
    Poziom 14  
    Posty: 83
    Pomógł: 1
    Ocena: 2
    Nie jestem jakims super programisa c C ale jak na mój gust to wyglądało by tak:
    
    cout<<"podaj rozmiar: ";
    int rozmiar;
    cin>>rozmiar;
    int *tablica=new int[rozmiar*rozmiar];

    Zostanie zarezerwowany obszar pamięci wielkosci tablicy dwuwymiarowej tablica[rozmiar][rozmiar].

    Odwolujesz sie do niej nastepujaco
    *(&(&tablica[i])[j])=4;

    Ten sposob dziala napewno bo sprawdzałem.
    Pozdraiwiam
  • REKLAMA
  • #6 446790
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Gavian napisał:
    Sorry mała pomyłaka. Odwołujesz sie nastepujaco:
    *(&tablica[rozmiar*i+j])=4;
    A czy przypadkie operatory * i & nie są 'przeciwnościami' i nie 'znoszą' się? Wg mnie zapis równoważny do *(&tablica[rozmiar*i+j]) jest tablica[rozmiar*i+j] A jeśli chodzi o tablice strikte 2 wymiarową to najwygodniej jest zrobić to tak, zdefiniować tablice ** o rozmiarze x*y a następnie zdefioniować tablice * z wartościami będącymi wskaźnikami do poszczególnych wierszy, wtedy wynikowo przy dostępie do każdego elementu tablica[x][y] urzywa się najpierw adresowania wiersza tablica[x] a potem względem tego wiersza do elementu y.
REKLAMA