Multidimensional Arrays Chapter 13 1 The plural of mongoose starts with a "p" Initializing a multidimensional array 0 1 2 Printing the contents of an array 3 0 7 0 12 5 1 2 3 4 2 13 6 -4 6 3 -9 5 4 3 1 -1 2 -2 8 10 Processing by row Processing by column 2 3 Two 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 component’s position in each dimension 0 1 2 3 4 0 Which cell is Location (2,3) ? 1 2 3 7 0 12 5 2 13 6 -4 6 3 -9 5 4 3 1 -1 2 -2 8 10 4 Declaring Two Dimensional Arrays Syntax: data_type array_name [row_dim][col_dim]; Example: int First element is int_table[0][0] Last element is int_table[4][3] int_table [5][4]; 0 0 1 2 3 7 0 12 5 1 2 3 4 2 13 6 -4 6 3 -9 5 4 3 1 -1 2 -2 8 10 5 Processing 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 [5][4]; int row, col; 6 Processing Two-D Arrays What does the routine below do with the array? What should we name the function? total_a_row 0 7 Processing Two-D Arrays What does this routine below do with the array? What should we name the function? total_column 0 8 Processing Two-D Arrays This function initializes an array. Fill in the blanks with the correct identifiers 3 col table value 9 Printing 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 goes here? row col endl row col row col 10 Passing Arrays as Parameters Recall declaration for 1-D array void whatever ( float num_list [ ], int size); we didn’t 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 Passing 2-D Arrays as Parameters For a 2-D array, declare void whatever ( float 11 num_table [ ][4], int num_rows); 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 12 Alternate 2-D Array Definition Think of the 2-D array as an array of arrays Example typedef float rent_pmts [12]; rent_pmts renters [6]; Each element of renters is an array of rent_pmts 0 1 … 10 11 50 50 … 50 50 1 50 50 … 50 50 … … … … 5 50 50 … 50 50 0 13 Multidimensional Arrays C++ arrays not limited to two dimensions – limitation is amount of memory const int NUM_BLDGS = 10; const int APTS_PER_BLDG = 12; float apt_pmts [NUM_BLDGS][6][APTS_PER_BLDG]; 50 50 … 50 50 50 50 … 50 50 … … … 50 50 … 50 50 14 Multidimensional Arrays C++ arrays not limited to two dimensions – limitation is amount of memory const int NUM_BLDGS = 10; const int APTS_PER_BLDG = 12; float apt_pmts [NUM_BLDGS][6][APTS_PER_BLDG]; This gives a 3-D array with 720 items apt_pmt [bldg][tennant][apt] 50 50 … 50 50 50 50 … 50 50 … … … 50 50 … 50 50 15 Testing 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 – don’t reverse row and column references 16 Testing and Debugging Use meaningful identifiers for the array name and indeces Double check upper and lower bounds on indeces – don’t walk off the edge of the array When declaring multidimensional array as a formal parameter – must state sizes of all but first dimension 17 Testing 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 multidimensional array type – use this for actual and formal parameter declaration
© Copyright 2026 Paperzz