2.8.3 Moniulotteiset taulukot

Moniulotteisessa taulukossa jokaista ulottuvuutta vastaa yksi kokomäärittely. Siten kaksiulotteisessa taulukossa eli matriisissa on peräkkäin kaksi hakasuluissa annettua taulukon kokoa:

double matriisi[5][4];

Näin määritellyssä matriisissa on 5 riviä ja 4 saraketta. Huomaa, että (toisin kuin joissain muissa ohjelmointikielissä) kaksiulotteista taulukkoa ei voi määritellä esim.

double matriisi[5,4]; /* VÄÄRIN! */

Vastaavalla tavalla voitaisiin määritellä 3-, 4-, jne. -ulotteisia taulukoita, mutta niitä tarvitaan melko harvoin.

Seuraava esimerkkiohjelma täyttää kaksiulotteisen taulukon kokonaisluvuilla. Taulukon koko on MMAX*NMAX. Ohjelma kysyy käyttäjältä taulukkoon tulevat luvut ja lopuksi tulostaa taulukon alkiot matriisimuotoisena.

/* *********************************************************
MATRIISI.CPP
  Kaksiulotteisen taulukon käsittelyn harjoittelua.
  Lukee taulukkoon kokonaislukuja ja tulostaa ne näytölle.
********************************************************* */

#include <iostream.h>

#define MMAX 5  // taulukon rivien maksimilukumäärä
#define NMAX 5  // taulukon sarakkeiden maksimilukumäärä

int main(void)
{
  int taulu[MMAX][NMAX]; // kokonaislukutaulukko (matriisi)
  int i, j, m, n;

  do {
    cout << "Anna rivien lukumäärä (1-" << MMAX << ") > ";
    cin >> m;
  } while (m < 1 || m > MMAX);

  do {
    cout << "Anna sarakkeiden lukumäärä (1-" << NMAX << ") > ";
    cin >> n;
  } while (n < 1 || n > NMAX);

  for (i=0; i<m; i++) { // käydään läpi rivit 1...m
    cout << "Anna " << n << " kokonaislukua > ";
    for (j=0; j<n; j++)
      cin >> taulu[i][j];
  }

  cout << "Annoit luvut:\n";
  for (i=0; i<m; i++) { // käydään läpi rivit 1...m
    for (j=0; j<n; j++)
      cout << "\t" << taulu[i][j]; // käytetään tabulaattoria
    cout << endl; // kunkin rivin päätteeksi rivinvaihto
  }

  return 0;
}

Esimerkkiajo:

Anna rivien lukumäärä (1-5) > 3
Anna sarakkeiden lukumäärä (1-5) > 4
Anna 4 kokonaislukua > 3 1 90 32
Anna 4 kokonaislukua > -2 4 -34 222
Anna 4 kokonaislukua > 45 2 4 4
Annoit luvut:
    3    1   90   32
    -2   4   -34  222
    45   2   4    4