Presentation is loading. Please wait.

Presentation is loading. Please wait.

Arrays Chapter 12. Overview Arrays and their properties Creating arrays Accessing array elements Modifying array elements Loops and arrays.

Similar presentations


Presentation on theme: "Arrays Chapter 12. Overview Arrays and their properties Creating arrays Accessing array elements Modifying array elements Loops and arrays."— Presentation transcript:

1 Arrays Chapter 12

2 Overview Arrays and their properties Creating arrays Accessing array elements Modifying array elements Loops and arrays

3 Arrays and Their Properties Hold several values of the same type Based on a slot number (the index number) Instant access Linear (one after the other) Static – once their size is set, it’s set…

4 4 Arrays Hold Multiple Values Regular variable Array days stores 3 values of type int Variable count stores one value of type int int days[ 3 ]; int count; Array variable count Allocates memory for 3 ints days 1 st element 2 nd element 3 rd element 5 2 3 4

5 What arrays look like Things to notice There are 7 slots, with index numbers 0 – 6 The name of the array is myArray Easy to be off by one 0 123456 myArray

6 Creating Arrays [ ]; Notice that we can create an array of any data type, just by changing the data type!

7 Examples An array of shorts: short someArray [50]; An array of floats: float myArray [25]; An array of booleans: bool list [65]; An array of chars: char characters [255];

8 Modifying an Array You must specify which slot you are putting information in Example: int myArray [50]; myArray [ 3 ] = 12; This won’t work: int myArray [50]; myArray = 12; Data type on the left of = is an array Data type on right of = is an int 01234 … 49 12

9 Accessing Information Copying information out of a particular slot int clientAge; clientAge = myArray [ 4 ]; This copies information from the fifth slot (slot four) into the variable clientAge

10 Initializing Arrays (large arrays) For most arrays, you will use a loop to initialize Example: Create an array of 5 bytes and fill each slot with the number 42 byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; }

11 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; }

12 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 00000

13 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 00000 0 counter

14 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 00000 0 counter

15 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 00000 0 counter

16 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 420000 0 counter

17 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 420000 1 counter

18 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 420000 1 counter

19 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 420000 1 counter

20 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 000 1 counter

21 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 000 2 counter

22 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 000 2 counter

23 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 000 2 counter

24 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 00 2 counter

25 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 00 3 counter

26 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 00 3 counter

27 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 00 3 counter

28 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 0 3 counter

29 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 0 4 counter

30 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 0 4 counter

31 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 0 4 counter

32 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 4 counter

33 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 5 counter

34 Line by Line byte myList [5]; for (int counter = 0; counter < 5; counter++) { myList [counter] = 42; } 01234 42 5 counter false

35 Finding the Smallest Element If you were given an array of numbers, how would YOU do it? Computers can only compare two at a time Go through entire list Keep track of smallest so far Let’s assume –We have an array of 5 ints –The array contains random unknown numbers –The name of the array is called randomArray

36 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 smallestSoFar

37 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 smallestSoFar

38 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 42 smallestSoFar

39 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 42 smallestSoFar 1 counter

40 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 42 smallestSoFar 1 counter

41 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 42 smallestSoFar 1 counter Is 42 > 17?

42 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 17 smallestSoFar 1 counter

43 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 17 smallestSoFar 1 counter

44 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 17 smallestSoFar 2 counter

45 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 17 smallestSoFar 2 counter

46 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 17 smallestSoFar 2 counter Is 17 > 42?

47 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 17 smallestSoFar 2 counter

48 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 17 smallestSoFar 3 counter

49 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 17 smallestSoFar 3 counter

50 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 17 smallestSoFar 3 counter Is 17 > -8?

51 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 smallestSoFar 3 counter

52 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 smallestSoFar 3 counter

53 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 smallestSoFar 4 counter

54 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 smallestSoFar 4 counter

55 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 smallestSoFar 4 counter Is -8 > 4?

56 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 smallestSoFar 4 counter

57 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 smallestSoFar 5 counter

58 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 smallestSoFar 5 counter

59 Another Trace int smallestSoFar; smallestSoFar = randomArray[0]; for (int counter = 1; counter < 5; counter++) { if (smallestSoFar > randomArray[counter]) { smallestSoFar = randomArray[counter]; } // if } // for 01234 421742-84 smallestSoFar 5 counter

60 Passing Arrays to Functions #include void modifyArray (int inArray[ ], int arraySize) { // Stuff that changes the array } void main ( ) { int myArray [15]; modifyArray (myArray, 15); }

61 The Overall Concept Arrays hold values that are all the same type Arrays are static in size Creating arrays always follows a format You can create an array of any type To initialize or search arrays, you’ll almost always use a loop

62 62 More on Initializing Arrays Initialize all three indexed variables of the array “a” If fewer values are listed than there are indexed variables, remaining indexed variables are initialized to zero of the array base type Automatically sized int a[ 3 ] = { 2, 12, 1 };int a[ 3 ]; a[ 0 ] = 2; a[ 1 ] = 12; a[ 2 ] = 1; int b[ ] = { 5, 12, 11 };int b[ 3 ] = { 5, 12, 11 }; is equivalent to: Only initializes first 3 elements of 5 element array int c[ 5 ] = { 2, 4, 8 }; 24800 Un-initialized elements set to zero

63 63 Initializing Strings If string constant is used, null terminator is automatically included char short_str [ ] = “abc”; Character array also has indexed variables Sized automatically to length of string + 1 for the ‘\0’ Change value in short_str to contain all ‘X’ characters Is equivalent to: char short_str [ 4 ] = “abc”; Is not equivalent to: char short_str [ ] = {‘a’, ‘b’, ‘c’}; short_str[ 0 ] short_str[ 1 ] short_str[ 2 ]... int index = 0; while ( short_str [ index ] != ‘\0’ ) { short_str [ index ] = ‘X’; index++; } ‘a’ ‘b’ ‘c’ ‘\0’ ‘a’ ‘b’ ‘c’ Element data type Loop ends when element is \0

64 64 More Array Processing Processing array elements is the same as processing other variables Increment value in score[ 2 ] ++ score [ 2 ]; int result = score [ 4 ] * 2; if ( score[ 3 ] < score[ 4 ] ) Loop iterates as long as score[ count ] does not equal 0 int score[ 5 ] = { 7, 8, 9, 10, 0 }; Is the value in score[ 3 ] less than the value in score[ 4 ]? Initializes result to value of score[ 4 ] times 2 while ( score[ count ] != 0 )

65 65 Parallel Arrays Using two or more arrays to represent relationships involving different data types Elements are integers const int NUMEMPS; int hours [NUMEMPS]; float payRate [NUMEMPS];... for ( int index = 0; index < NUMEMPS; index++ ) { cout << “Hours employee #” << ( index + 1 ); cin >> hours[ index ]; cout << “Pay rate employee #” << ( index + 1 ); cin >> payRate[ index ]; } Stores hours worked by each employee Stores pay rate for each employee Number of employees Elements are floats Same index used to access both arrays

66 66 Printing Array Contents Use a loop to display the contents of each array element int testArr [ 5 ] = { 10, 20, 30, 40, 50 }; Displays address of the array, not the contents Declare and initialize array Loop displays value of each element cout << testArr << endl; for ( int ct = 0; ct < 5; ct++ ) cout << testArr [ ct ] << endl; Doesn’t work! Works! Exception: Displaying the contents of a char array containing a C-string char name [ ] = “Ned Nerd”; cout << name << endl; cout uses \0 when given a char array to determine end of the string Displays string, not array address

67 67 Array Elements as Function Arguments Array element, type int, as the argument void showVal ( int num ); void main ( ) { int testArr [ 5 ] = { 5, 10, 15, 20, 25 }; for ( int ct = 0; ct < 5; ct++ ) showVal ( testArr [ ct ] ); } void showVal ( int num ) { cout << num << “ “; } Array elements can be passed by value or by reference Parameter is also type int With each loop iteration, the value contained in testArr[ct] is passed to the function showVal 5 10 15 20 25 Program output:

68 68 Arrays as Function Arguments Starting address of array is passed to function showVal void showVal ( int nums [ ] ); void main ( ) { int testArr [ 5 ] = { 5, 10, 15, 20, 25 }; showVal ( testArr ); } void showVal ( int nums [ ] ) { for ( int ct = 0; ct < 5; ct++ ) cout << nums [ ct ] << “ “; } Any changes to parameter nums, effect argument testArr 5 10 15 20 25 Program output: 510152025testArr 0123401234 nums[0] nums[1] nums[2] nums[3] nums[4]

69 69 Arrays as Function Arguments Use two arguments: The address of the array The size of the array int testArr1 [ 2 ] = { 5, 10 }; int testArr2 [ 5 ] = { 5, 10, 15, 20, 25 }; int testArr3 [ 7 ] = { 5, 10, 15, 20, 25, 30, 35 }; showVal ( testArr1, 2 ); showVal ( testArr2, 5 ); showVal ( testArr3, 7 ); Modify function showVal to display the contents of an int array of any size Function calls to showVal In main: Address of array Size of array void showVal ( int nums [ ], int size ) { for ( int ct = 0; ct < size; ct++ ) cout << nums [ ct ] << “ “; } New showVal:

70 70 Arrays as Function Arguments Array parameters give direct access to the array argument Changes values in parameter nums and argument testArr void doubleArr ( int nums [ ], int size ); void main ( ) { int testArr [ 5 ] = { 1, 2, 3, 4, 5 }; for ( int ct = 0; ct < 5; ct++ ) cout << testArr [ ct ] << “ “; doubleArr ( testArr, 5 ); for ( int ct = 0; ct < 5; ct++ ) cout << testArr [ ct ] << “ “; } void doubleArr ( int nums [ ], int size ) { for ( int i = 0; i < size; i++ ) nums [ i ] *= 2; } 1 2 3 4 5 2 4 6 8 10 Program output:

71 71 Two-dimensional Arrays Two-dimensional array is several identical arrays put together in the form of a table score[0][0] score[0][1] score[0][2] score[1][0] score[1][1] score[1][2] score[2][0] score[2][1] score[2][2] column 0 column 1 column 2 row 0 row 1 row 2 Exam scores Students float score [ 3 ] [ 3 ]; score [ 1 ] [ 2 ] = 93.2; cout << score [ 0 ] [ 2 ]; Number of rowsNumber of columns Row index Column index Assign value to an element Display value of an element

72 72 Two-dimensional Arrays Nested loops are used to process each element of a two-dimensional array float score [ 3 ] [ 3 ]; for ( int std = 0; std < 3; std++ ) { for ( int exam = 0; exam < 3; exam++ ) { cout << “Student “ << std + 1 << “, exam “ << exam + 1 << “: “; cin >> score [ std ] [ exam ]; } cout << endl; } 92.388.583.6 79.2 72.8 ? ? ? ? 0 1 2 012012 Outer loop iterates over rows Inner loop iterates over columns Student 1, exam 1: 92.3 Student 1, exam 2: 88.5 Student 1, exam 3: 83.6 Student 2, exam 1: 79.2 Student 2, exam 2: 72.8... Program output: score Read in an exam score Column index Row index

73 73 Two-dimensional Arrays as Function Arguments Number of columns is specified in a two-dimensional array parameter void showArr ( int Arr [ ] [ 2 ], int rows ); void main ( ) { int table [ 3 ] [ 2 ] = { { 8, 5 }, { 7, 9 }, { 6, 3 } }; showArr ( table, 3 ); } void showArr ( int Arr [ ] [ 2 ], int rows ) { for ( int r = 0; r < rows; r++ ) { for ( int c = 0; c < 2; c++ ) cout << Arr [ r ] [ c ] << “ “; cout << endl; } 857963857963 Program output: Row 1Row 2Row 3 Extra braces that enclose each row’s values are optional EmptyColumn index Number of rows Iterates rows Iterates columns

74 74 Arrays Strings A two-dimensional array of characters can be used as multiple arrays of strings char team [ 4 ] [ 9 ] = { “Ned”, “Connie”, “Pat”, “Greg” }; cout << team [ 2 ]; for ( int ct = 0; ct < 4; ct++ ) cout << team [ ct ] << endl; Name of array with only a row index is the address of that row Loop displays all names in the array N e d \0 C o n n i e \0 P a t \0 G r e g \0 01230123 Pat Ned Connie Pat Greg Maximum length of string is 9 – 1 (for null terminator) Four names, 8 characters long Program output:

75 End of Lecture 4 Next Time, more on Arrays Program – 2, Due Thurs. 7/7 (classes) Program – 3, Due Thurs. 7/21 (arrays)


Download ppt "Arrays Chapter 12. Overview Arrays and their properties Creating arrays Accessing array elements Modifying array elements Loops and arrays."

Similar presentations


Ads by Google