Jak pomieścić wszystkie dane? Czyli tablice dwuwymiarowe w C++
Tablice dwuwymiarowe to nieco bardziej rozbudowane tablice jednowymiarowe. Tworzy się je w następujący sposób:
typ_danych_jakie_bedziemy_przechowywac nazwa_tablicy[ilosc_wierszy][ilosc_kolumn];
int m = 21; char tablica[23][m]; //tablica o rozmiarze 23x21 przechowująca dane typu char
int tablica[10][10] //tablica o rozmiarze 10x10 - jej strukturę możesz zobaczyć niżej
Zadeklarowana powyżej tablica dwuwymiarowa wizualnie będzie wyglądać tak (UWAGA: Indeksowanie kolumn oraz wierszy w tablicach rozpoczynamy od 0):
X[0][0] | X[0][1] | X[0][2] | X[0][3] | X[0][4] | X[0][5] | X[0][6] | X[0][7] | X[0][8] | X[0][9] |
X[1][0] | X[1][1] | X[1][2] | X[1][3] | X[1][4] | X[1][5] | X[1][6] | X[1][7] | X[1][8] | X[1][9] |
X[2][0] | X[2][1] | X[2][2] | X[2][3] | X[2][4] | X[2][5] | X[2][6] | X[2][7] | X[2][8] | X[2][9] |
X[3][0] | X[3][1] | X[3][2] | X[3][3] | X[3][4] | X[3][5] | X[3][6] | X[3][7] | X[3][8] | X[3][9] |
X[4][0] | X[4][1] | X[4][2] | X[4][3] | X[4][4] | X[4][5] | X[4][6] | X[4][7] | X[4][8] | X[4][9] |
X[5][0] | X[5][1] | X[5][2] | X[5][3] | X[5][4] | X[5][5] | X[5][6] | X[5][7] | X[5][8] | X[5][9] |
X[6][0] | X[6][1] | X[6][2] | X[6][3] | X[6][4] | X[6][5] | X[6][6] | X[6][7] | X[6][8] | X[6][9] |
X[7][0] | X[7][1] | X[7][2] | X[7][3] | X[7][4] | X[7][5] | X[7][6] | X[7][7] | X[7][8] | X[7][9] |
X[8][0] | X[8][1] | X[8][2] | X[8][3] | X[8][4] | X[8][5] | X[8][6] | X[8][7] | X[8][8] | X[8][9] |
X[9][0] | X[9][1] | X[9][2] | X[9][3] | X[9][4] | X[9][5] | X[9][6] | X[9][7] | X[9][8] | X[9][9] |
Oczywiście nie będzie zawierała ona żadnych danych.
Do odczytu i zapisu danych w tablicach dwuwymiarowych używa się zagnieżdżonych pętli iteracyjnych FOR. Prześledźmy na przykładzie jak to się odbywa:
#include <iostream> using namespace std; int main() { int tab[8][6]; //towrzymy tablicę typu int o wymiarach 8x6 for(int i = 0;i<8<i++) for(int j = 0;j<6;j++) cin >> tab[i][j]; for(int i = 0;i<8<i++) for(int j = 0;j<6;j++) cout << "tab[" << i << "][" << j << "]: " << tab[i][j]; return 0; }
Zapis danych:
for(int i = 0;i<8<i++) for(int j = 0;j<6;j++) cin >> tab[i][j];
Odczyt danych:
for(int i = 0;i<8<i++) for(int j = 0;j<6;j++) cout << "tab[" << i << "][" << j << "]: " << tab[i][j];
Do odczytu i zapisu danych używaliśmy dwóch zagnieżdżonych pętli iteracyjnych FOR w przypadku tablic trójwymiarowych, używalibyśmy trzech zagnieżdżonych pętli FOR, a w przypadku tablic czterowymiarowych czterech (tablic czterowymiarowych i wyższych praktycznie nie używa się w programowaniu).