lecture 25: multi-dimensional arrays

26
LECTURE 25: MULTI-DIMENSIONAL ARRAYS CSC 107 – Programming For Science

Upload: dyani

Post on 13-Feb-2016

64 views

Category:

Documents


0 download

DESCRIPTION

CSC 107 – Programming For Science. Lecture 25: Multi-Dimensional Arrays. Today’s Goal. Get familiar with multi -dimensional arrays Creating variables for multi -dimensional array Multi-dimensional array entry assignments Using values stored in the entries in these array. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Lecture  25:  Multi-Dimensional Arrays

LECTURE 25: MULTI-DIMENSIONAL ARRAYS

CSC 107 – Programming For Science

Page 2: Lecture  25:  Multi-Dimensional Arrays

Today’s Goal

Get familiar with multi-dimensional arrays Creating variables for multi-dimensional

array Multi-dimensional array entry assignments Using values stored in the entries in these

array

Page 3: Lecture  25:  Multi-Dimensional Arrays

Problem with Variables

Normal variable has single value at any time Can do better & hold list of values in an array

Only 1 value per entry, however, & size is fixed But this is very limiting in most situations

Bar codes are boring pictures

Must evaluate bridge stresses in multiple dimensions

Cannot do this with what we have so far

Page 4: Lecture  25:  Multi-Dimensional Arrays

Multi-dimensional Arrays

Multiple dimensions refine how data viewed 1-d array is a row of data

Page 5: Lecture  25:  Multi-Dimensional Arrays

Multi-dimensional Arrays

Multiple dimensions refine how data viewed 1-d array is a row of data

Create an entire table of entries with 2-d array

Page 6: Lecture  25:  Multi-Dimensional Arrays

Multi-dimensional Arrays

Multiple dimensions refine how data viewed 1-d array is a row of data

Create an entire table of entries with 2-d array

3-d array creates box of entries

Page 7: Lecture  25:  Multi-Dimensional Arrays

Multi-dimensional Arrays

Each entry still holds one piece of data Column used in 1-d array to access

column Access entries in 2-d array with row &

column 17 indices needed for entry in 17-dimension

array Using an entry still depends on array

variable Values are independent of all other entries Its all about the values: only work with

single entry

Page 8: Lecture  25:  Multi-Dimensional Arrays

Declaring Arrays Variables

Like all variables, must declare before use

Type, name, & size of each dimension needed Each of the array's entries hold value of

that type Size must be integer since ½ a value hard

to useint prettyPicture[256][32];float armada[MAX_SHIPS][MAX_DECKS];double taxesOwed[MAX_EARN][10];char names[17][MAX_NAME_SIZE];long number[1][1];

Page 9: Lecture  25:  Multi-Dimensional Arrays

Working With Arrays

0 is start of columns, rows, (& everything else) Within table, all rows have same number of

columns Identical rows & columns in 3-d array on z-

dimension Still cannot find size of array on any

dimension Even finding number of rows or columns

impossible Still no warning exceeding bounds of

array But restricts code to use entry or array

variable Entire row or column cannot be used in any

way

Page 10: Lecture  25:  Multi-Dimensional Arrays

Initializing an Array

Declare array variable and set initial values

All entries must have initial value specified Starts with open brace… … open brace & values for row’s entries… …finally add a closing brace to end row… …closing brace to end the initializationdouble switch[2][2] ={{0,1},{2.2,3.2}};char epoch[3][1] = {{‘A’},{‘B’},{‘C’}};int dozer[1][1] = {{1}};bool raygun[3][3] = {{true,false,true}};

Page 11: Lecture  25:  Multi-Dimensional Arrays

Using An Array

Each entry used like variable as normal But only can entry via array variable Use brackets for each dimension to identify

the entry Multidimensional arrays ♥ for loops,

tooint picture[20][10];for (int i = 0; i < 20; i++) { for (int j = 0; j < 10; j++) { picture[i][j] = (i * 10) + j; }}

Page 12: Lecture  25:  Multi-Dimensional Arrays

Multi-Dim. Array Example

float bridgeStress[100][100];int times[100];

bridgeStress[0,4] = 3.5;times[45] = 2;bridgeStress(23)(12) = pow(12, 2);times[12] = times[45] * 4;bridgeStress[2] += times[12];times[99] = bridgeStress[0][34] + 34;bridgeStress[3][12] = times[-2];bridgeStress[2][0] = 0;bridgeStress[2][0] += 45;bridgeStress[3][2] = pow(2,bridgeStress[2][0]);

Page 13: Lecture  25:  Multi-Dimensional Arrays

Multi-Dim. Array Example

float bridgeStress[100][100];int times[100];

bridgeStress[0,4] = 3.5;times[45] = 2;bridgeStress(23)(12) = pow(12, 2);times[12] = times[45] * 4;bridgeStress[2] += times[12];times[99] = bridgeStress[0][34] + 34;bridgeStress[3][12] = times[-2];bridgeStress[2][0] = 0;bridgeStress[2][0] += 45;bridgeStress[3][2] = pow(2,bridgeStress[2][0]);

Page 14: Lecture  25:  Multi-Dimensional Arrays

Multi-Dim. Array Example

float bridgeStress[100][100];int times[100];

bridgeStress[0,4] = 3.5;times[45] = 2;bridgeStress(23)(12) = pow(12, 2);times[12] = times[45] * 4;bridgeStress[2] += times[12];times[99] = bridgeStress[0][34] + 34;bridgeStress[3][12] = times[-2];bridgeStress[2][0] = 0;bridgeStress[2][0] += 45;bridgeStress[3][2] = pow(2,bridgeStress[2][0]);

Page 15: Lecture  25:  Multi-Dimensional Arrays

Multi-Dim. Array Example

float bridgeStress[100][100];int times[100];

bridgeStress[0,4] = 3.5;times[45] = 2;bridgeStress(23)(12) = pow(12, 2);times[12] = times[45] * 4;bridgeStress[2] += times[12];times[99] = bridgeStress[0][34] + 34;bridgeStress[3][12] = times[-2];bridgeStress[2][0] = 0;bridgeStress[2][0] += 45;bridgeStress[3][2] = pow(2,bridgeStress[2][0]);

Page 16: Lecture  25:  Multi-Dimensional Arrays

Multi-Dim. Array Example

float bridgeStress[100][100];int times[100];

bridgeStress[0,4] = 3.5;times[45] = 2;bridgeStress(23)(12) = pow(12, 2);times[12] = times[45] * 4;bridgeStress[2] += times[12];times[99] = bridgeStress[0][34] + 34;bridgeStress[3][12] = times[-2];bridgeStress[2][0] = 0;bridgeStress[2][0] += 45;bridgeStress[3][2] = pow(2,bridgeStress[2][0]);

Page 17: Lecture  25:  Multi-Dimensional Arrays

Multi-Dim. Array Example

float bridgeStress[100][100];int times[100];

bridgeStress[0,4] = 3.5;times[45] = 2;bridgeStress(23)(12) = pow(12, 2);times[12] = times[45] * 4;bridgeStress[2] += times[12];times[99] = bridgeStress[0][34] + 34;bridgeStress[3][12] = times[-2];bridgeStress[2][0] = 0;bridgeStress[2][0] += 45;bridgeStress[3][2] = pow(2,bridgeStress[2][0]);

Page 18: Lecture  25:  Multi-Dimensional Arrays

Multi-Dim. Array Example

float bridgeStress[100][100];int times[100];

bridgeStress[0,4] = 3.5;times[45] = 2;bridgeStress(23)(12) = pow(12, 2);times[12] = times[45] * 4;bridgeStress[2] += times[12];times[99] = bridgeStress[0][34] + 34;bridgeStress[3][12] = times[-2];bridgeStress[2][0] = 0;bridgeStress[2][0] += 45;bridgeStress[3][2] = pow(2,bridgeStress[2][0]);

Page 19: Lecture  25:  Multi-Dimensional Arrays

Multi-Dim. Array Example

float bridgeStress[100][100];int times[100];

bridgeStress[0,4] = 3.5;times[45] = 2;bridgeStress(23)(12) = pow(12, 2);times[12] = times[45] * 4;bridgeStress[2] += times[12];times[99] = bridgeStress[0][34] + 34;bridgeStress[3][12] = times[-2];bridgeStress[2][0] = 0;bridgeStress[2][0] += 45;bridgeStress[3][2] = pow(2,bridgeStress[2][0]);

Page 20: Lecture  25:  Multi-Dimensional Arrays

Multi-Dim. Array Example

float bridgeStress[100][100];int times[100];

bridgeStress[0,4] = 3.5;times[45] = 2;bridgeStress(23)(12) = pow(12, 2);times[12] = times[45] * 4;bridgeStress[2] += times[12];times[99] = bridgeStress[0][34] + 34;bridgeStress[3][12] = times[-2];bridgeStress[2][0] = 0;bridgeStress[2][0] += 45;bridgeStress[3][2] = pow(2,bridgeStress[2][0]);

Page 21: Lecture  25:  Multi-Dimensional Arrays

Multi-Dim. Array Example

float bridgeStress[100][100];int times[100];

bridgeStress[0,4] = 3.5;times[45] = 2;bridgeStress(23)(12) = pow(12, 2);times[12] = times[45] * 4;bridgeStress[2] += times[12];times[99] = bridgeStress[0][34] + 34;bridgeStress[3][12] = times[-2];bridgeStress[2][0] = 0;bridgeStress[2][0] += 45;bridgeStress[3][2] = pow(2,bridgeStress[2][0]);

Page 22: Lecture  25:  Multi-Dimensional Arrays

Multi-Dim. Array Example

float bridgeStress[100][100];int times[100];

bridgeStress[0,4] = 3.5;times[45] = 2;bridgeStress(23)(12) = pow(12, 2);times[12] = times[45] * 4;bridgeStress[2] += times[12];times[99] = bridgeStress[0][34] + 34;bridgeStress[3][12] = times[-2];bridgeStress[2][0] = 0;bridgeStress[2][0] += 45;bridgeStress[3][2] = pow(2,bridgeStress[2][0]);

Page 23: Lecture  25:  Multi-Dimensional Arrays

Passing an Array

Entry like any variable & can pass to function Value of the entry cannot change in

function Entry's current value received by the

functionfabs(values[8][4]);cos(momentum[4][1]);

Pass entire array as argument for a function As before, parameter must be array of

same type Must specify number of columns in the

parameter

Page 24: Lecture  25:  Multi-Dimensional Arrays

Working With 2d Parameters

int determinant(int a[][2]) { return (a[0][0]*a[1][1])–(a[1][0]*a[0][1]);}\int main(void) { int bookExample[2][2]; bookExample[0][0] = 1; bookExample[0][1] = 3; bookExample[1][0] = -1; bookExample[1][1] = 5; int det = determinant(bookExample); cout << det;}

Page 25: Lecture  25:  Multi-Dimensional Arrays

Your Turn

Get into your groups and try this assignment

Page 26: Lecture  25:  Multi-Dimensional Arrays

For Next Lecture

Arrays & arrows discussed in Sections 12.1 – 12.5 We used arrows in a trace; but how do they

work? * not used enough; where else can I use it in

program? Can C++ make it even easier to shoot

ourselves in foot?

Angel also has Weekly Assignment #9 due Tues.

Programming Assignment #2 due in one week