Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

C++ Jak zadeklarowqać dynamiczną tablice dwuwymiarową ?

Kostek7 22 Nov 2008 22:31 1591 2
  • #1
    Kostek7
    Level 27  
    Muszę zadeklarować dwuwymiarową tablicę dynamiczną o elementach typu char. Jak to zrobić ?
    Napisałem coś takiego
    char *tab = new char [wczytana zmienna typu int] [wczytana zmienna typu int ] ;
    Ale kompilator nie przyjmuje rozwiązania. (MS VS EE)
  • #2
    mietekn
    Level 35  
    Kompilator nie przyjmuje bo masz zupełnie pomylone typy.
    Może po prostu uprościć to wszystko do:
    Code:
    char * tab=(char *) malloc(wymiar_x * wymiar_y);


    a odwoływać się przez:
    Code:
    tab[wymiar_x*x + y]
  • #3
    Dr.Vee
    VIP Meritorious for electroda.pl
    Dobra rada - w C++ nie używaj malloc() :)

    Można zrobić tak jak pisze mietekn (tj. przydzielić ciągły kawałek przestrzeni i obliczać indeksy), ale można też zrobić tak:
    Code:
     #include <iostream>
    
    #include <iomanip>

    int main(void)
    {
        std::cout << "Podaj wymiary tablicy: ";

        int m, n;
        std::cin >> m >> n;

        char **array;
        array = new char* [m];

        for (int i = 0; i < m; ++i) {
            array[i] = new char[n];
            // wypelnimy tablicę w ramach demonstracji
            for (int j = 0; j < n; ++j) {
                array[i][j] = i+j+1;
            }
        }

        // wypiszemy tablicę w ramach demonstracji
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j)
                std::cout << std::setw(2) << (int)array[i][j] << " ";
            std::cout << std::endl;
        }

        return 0;
    }

    Oba rozwiązania można połączyć przydzielając jedną tablicę m*n elementów, a następnie utworzyć tablicę wskaźników na co n-ty element w pierwszej tablicy. Rysunek wart 100 słów:

    C++ Jak zadeklarowqać dynamiczną tablice dwuwymiarową ?

    Pozdrawiam,
    Dr.Vee