Lecture Programming in C++ - Chapter 10: Multi-dimensional numeric arrays. On completion of this chapter students will know how to: Initialize multidimensional arrays, print multidimensional arrays, read a file for array element values, visualize storage, pass an array to a function.
Trang 1Numeric Arrays
Trang 2Visual image of matrix or table for two
dimensional array
Subscript for each dimension
Declared with value for each dimension
int b[2] [3];
Lesson 10.1
Name of array Type of array
Two sets of [ ] so two dimensionalNumber of elements 2*3 = 6
Trang 3Initialized by row
Example: int b[2] [3] ={51, 52, 53, 54, 55, 56};
Elements would be:
b[0] [0] = 51 b[0] [1] = 52 b[0] [2] = 53 b[1] [0] = 54 b[1] [1] = 55 b[1] [2] = 56
Lesson 10.1
Remember – subscripts begin at zero!
Trang 4Can use braces to separate rows
Lesson 10.1
int c [4] [3] = {{ 1, 2, 3}, { 4, 5, 6}, { 7, 8, 9}, {10, 11, 12}};
Advantage is visual table!
Trang 5Lesson 10.1
int c[4] [3] = {{1,2}, {4, 5, 6}, {7},
{10,11,12}};
If values left out
of row, implicitly
initialized to zero
c[2] [2] = 0
int c[ ] [3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10,11,12}};
If far left dimension
size left blank, it is
declared implicitly
by values given – in
this case 4 rows
Trang 6Usually use
nested for loop
– Two dimensions,
two loops
First loop controls rows Second loop controls columns
Lesson 10.1
for (j = 0; j < 2; j++) {
for (k = 0; k < 3; k++) {
cout << b[j] [k];
} cout << endl;
} Creates new line or row
Trang 7Lesson 10.2
infile >> num_rows >> num_cols; for (j = 0; j < num_rows; j++)
{ for (k = 0; k < num_cols; k++) {
infile >> a[j] [k];
} }
Read number of
columns and rows
from file prior to
array elements
Trang 8Storage of TwoDimensional Arrays
Fills row by row
– If have fewer elements, then storage to the right
of those filled uninitialized elements
Three and greater dimensions
– Far right subscript increments first
– Other subscripts increment in order from right
to left
Lesson 10.2
Trang 9* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
array[5] [9]
1 2 3 4 * * * * *
2 4 6 8 * * * * *
3 5 7 9 * * * * *
* * * * * * * * *
* * * * * * * * *
If file gave number
of rows as 3 and number
of columns as 4 then have noncontiguous storage.
Lesson 10.2
Trang 10Formula to locate arrays element's position
in memory
array element, e[x] [y] [z]
array size e[I] [J] [K]
sequence location = x * (J * K) + y * (K) + z +1
array element, e[0] [1] [2]
array size e[2] [3] [4]
sequence location = 0 * (3 *4) + 1 * (4) + 2+1
= 7
Lesson 10.2
Trang 11Lesson 10.2
void funcName (type, type, type[ ] [max_cols]);
funcName (rows, cols, arrayName);
void funcName (type r, type c, type array[ ] [max_cols]);
Declaration
Call
Header
Trang 12Place in front of array name in function
declaration and header
Assures that array is not modified in function
Lesson 10.2
void funcName (type, type, const type [ ] [ col ]);
Declaration
Trang 13Initialize multidimensional arrays Print multidimensional arrays
Read a file for array element values Visualize storage
Pass an array to a function
Learned how to: