Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSC 107 - Programming for Science Lecture 28: Multi-dimensional Arrays.

Similar presentations


Presentation on theme: "CSC 107 - Programming for Science Lecture 28: Multi-dimensional Arrays."— Presentation transcript:

1 CSC 107 - Programming for Science Lecture 28: Multi-dimensional Arrays

2 Problem of the Day What do you get when you cross a mountain climber and a grape? Nothing, you cannot cross a scalar.

3 Today’s Goal After lecture should be familiar with multi- dimensional arrays  Creating multi-dimensional array variables  Assigning data inside these array  Using values stored in these array

4 Problem with Arrays Each array stores single list of values Often work in multiple dimensions  Pictures are rarely 1 dimensional  Bridge design means evaluating stresses in multiple dimensions  Work with tables of data Not easy to do with a vector

5 Multidimensional Arrays Variable holding arrays of arrays  1-d array is a vector  2-d array is a matrix Each location holds one piece of data  Elements now accessed using row & column All locations still depend on array variable  Each location’s value independent of others  But cannot separate out rows or columns

6 Declaring Multidimensional Array Must declare array variable before use Declaration includes type, name, and size in each dimension  Sizes should be literal value  Name follows same rules as any other variable  Variable is 2-dimensional array of requested type  Each location, however, holds data of that type int neo[10][30]; // 10 rows x 30 columns float trinity[200][3]; // 200 rows x 3 columns FILE* morpheus[3][1]; // 3 rows x 1 column

7 Working With Arrays Starts numbering rows & columns at 0  Every row must have same number of columns Still cannot find array’s size  No way to compute number rows or columns Still no warning if you go beyond bounds  But only lets you use array variable or location

8 Initializing an Array Can set locations’ initial values Must specify value for all locations  Starts with open brace…  … lists values for row’s location in braces…  …ends with closing braces. double switch[2][2]={{0.0, 1.0},{2.2, 3.2}}; char epoch[3][1] = {{‘A’},{‘B’},{‘C’}}; int dozer[1][1] = {{1}}; FILE *tank[][3] = {{NULL,NULL,NULL},{NULL,NULL,NULL}};

9 Using An Array Each array location used like a variable  But can access only through array variable  Locations named via row & column Smoothing out graphical data: int i, j, picture[20][10]; //... Read in data to form picture for (i = 1; i < 19; i++) { for (j = 1; j < 9; j++) { picture[i][j] = (picture[i-1][j] + picture[i+1][j] + picture[i][j-1] + picture[i][j+1])/4; } }

10 Passing an Array Can pass a location like any other value  Element’s value cannot change  Function only gets single value fabs(values[8][4]); cos(momentum[4][1]); Can also pass entire array  Parameter must also be for an array  Parameter must include number of columns

11 Working With 2d Parameters int determinant(int a[][2]) { int i,j; return (a[0][0] * a[1][1])–(a[1][0] * a[0][1]); } int main(void) { int bookExample[2][2], myExample[3][3]; bookExample[0][0] = 1; bookExample[0][1] = 3; bookExample[1][0] = -1; bookExample[1][1] = 5; int det = determinant(bookExample); printf(“%d\n”, det); }

12 Your Turn Get back into groups and complete the daily activity

13 For Next Lecture Continue on Programming Assignment #2 Study for Midterm #2 on Monday


Download ppt "CSC 107 - Programming for Science Lecture 28: Multi-dimensional Arrays."

Similar presentations


Ads by Google