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 stworzyć dynamiczną tablicę dwuwymiarową z różnymi rozmiarami?

harry127 19 Gru 2009 19:39 1551 4
REKLAMA
  • #1 7410530
    harry127
    Poziom 10  
    Posty: 5
    Ocena: 1
    Witam
    Jak stworzyć tablicę dwuwymiarową, w której drugi wymiar może się zmieniać? Przykład w kodzie (nie działa oczywiście, dlatego pytam):
    int t[5], c;
    for(int i=0; i<5; i++) {
        cin>>c;
        int t[i][c];
    }
  • REKLAMA
  • #2 7410611
    xanio
    Poziom 27  
    Posty: 933
    Pomógł: 68
    Ocena: 55
    Widzę, że chyba jeszcze nie opanowałeś tematu wskaźników. Jeżeli mam rację, nadrób zaległości.
  • REKLAMA
  • #3 7410738
    maly_elektronik
    Poziom 23  
    Posty: 777
    Pomógł: 35
    Ocena: 5
    Tworzysz tablice jedno wymiarową a chcesz mieć 2 :?:
    int tablica[3] oznacza tablice jednowymiarową a int tablica[3][3] już 2 wymiarową :)
    A jeżeli chcesz żeby ilość 2 wymiaru tablicy była "nieskończona" to int tablica[3][]

    Pozdrawiam maly_elektronik
  • REKLAMA
  • #4 7410759
    harry127
    Poziom 10  
    Posty: 5
    Ocena: 1
    No... nie wszystko kumam (@edit: to było do pierwszej odpowiedzi). Dobra, mam taki kod (uproszczona wersja tego, co miałem przed chwilą :P):
    #include <iostream>
    #include <stdio.h>
    
    using namespace std;
    
    int main()
    {
          int c, cw;
          cin>>c;
          int *w[c];
          for(int i=0; i<c; i++) {
                  cin>>cw;
                  w[i] = new int[cw];
          }
          for(int i=0; i<c; i++) delete[] w[i];
          for(int i=0; i<c; i++) {
                  cout<<sizeof(w[i])<<endl;
          }
          cin.ignore();
          getchar();
          return 0;
    }


    Wklepuję takie dane:
    Cytat:
    3 //rozmiar tablicy w
    1 //rozmiar tablicy w[0]
    2 //rozmiar tablicy w[1]
    3 //rozmiar tablicy w[2]


    I powinienem dostać coś takiego:
    Cytat:
    1 //rozmiar tablicy w[0]
    2 //rozmiar tablicy w[1]
    3 //rozmiar tablicy w[2]


    A dostaję coś takiego:
    Cytat:
    4
    4
    4


    Co jest nie tak?
  • #5 7416933
    jestam
    Specjalista Automatyk
    Posty: 1799
    Pomógł: 210
    Ocena: 145
    sizeof podaje Ci rozmiar w bajtach w[i] (czyli int*) - u Ciebie to 32 bity

    w C++ zamiast tablic użyj std::vector
REKLAMA