Title: Multidimensional Arrays
1Multidimensional Arrays
2The plural of mongoose starts with a "p"
Initializing a multidimensionalarray
0 1 2 3 4
Processingby row
0 1 2 3
Printing thecontents ofan array
Processingby column
3Two dimensional Arrays
- A collection of components
- all of the same type
- structured in TWO dimensions
- each component accessed by a PAIR of indices
representing the components position in each
dimension
0 1 2 3 4
0 1 2 3
Which cell isLocation (2,3) ?
4Declaring Two Dimensional Arrays
- Syntax data_type array_name row_dimcol_dim
- Example
- First element isint_table00
- Last element isint_table43
int int_table 54
5Processing Two-D Arrays
- Arrays processed in some pattern
- random
- along rows
- along columns
- whole array
- We will use the declaration shown below
int int_table 54int row, col
6Processing Two-D Arrays
- What does the routine below do with the array?
What should we name the function?
total_a_row
0
7Processing Two-D Arrays
- What does this routine below do with the array?
What should we name the function?
total_column
0
8Processing Two-D Arrays
- This function initializes an array.
- Fill in the blanks with the correct identifiers
3
col
table
value
9Printing a Table
- We must process each row, item by item
- Which will be the inner loop?Which will be the
outer loop? - The LCV of the inner loop must be the one which
changes the most often
What goeshere?
endl
10Passing Arrays as Parameters
- Recall declaration for 1-D array
- we didnt specify the size in the brackets
- we sent the size as a separate parameter
- Recall name of the array is a pointer constant
- tells where the array starts in memory
- this is what is passed to the function
void whatever ( float num_list , int size)
11Passing 2-D Arrays as Parameters
- For a 2-D array, declare
- We are sending the starting address
- also how many elements it takes to jump us to the
next row - that is -- the number of columns
- Note that this could be for an array for ANY
number of rows, but exactly 4 columns - As with 1-D, we also send another parameter for
the function as a limiting value
void whatever ( float num_table 4, int
num_rows)
12Alternate 2-D Array Definition
- Think of the 2-D array as an array of arrays
- Example
- Each element of renters is an array of rent_pmts
typedef float rent_pmts 12rent_pmts renters
6
0 1 10 11
0 1 5
13Multidimensional Arrays
- C arrays not limited to two dimensions
- limitation is amount of memory
const int NUM_BLDGS 10const int APTS_PER_BLDG
12float apt_pmts NUM_BLDGS6APTS_PER_BLDG
14Multidimensional Arrays
- C arrays not limited to two dimensions
- limitation is amount of memory
const int NUM_BLDGS 10const int APTS_PER_BLDG
12float apt_pmts NUM_BLDGS6APTS_PER_BLDG
This gives a 3-D array with 720 itemsapt_pmt
bldgtennantapt
15Testing and Debugging
- Initialize all components of an array
- no guarantee of what is there to start with
- Use the same number of indeces as the declaration
of array - Make sure indeces are in order
- dont reverse row and column references
16Testing and Debugging
- Use meaningful identifiers for the array name and
indeces - Double check upper and lower bounds on indeces
- dont walk off the edge of the array
- When declaring multidimensional array as a formal
parameter - must state sizes of all but first dimension
17Testing and Debugging
- When calling function with array as parameter
- sizes of multi-dim actual parameter must match
exactly sizes of formal - Use typedef statement to define multi-dimensional
array type - use this for actual and formal parameter
declaration