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)
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: