Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 8: Arrays Starting Out with C++ Early Objects Seventh Edition by.

Slides:



Advertisements
Similar presentations
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 8: Arrays Starting Out with C++ Early Objects Seventh Edition by.
Advertisements

Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis,
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 10: Pointers by.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 5: Looping by Tony.
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 8 Arrays.
Chapter 8. 2 Objectives You should be able to describe: One-Dimensional Arrays Array Initialization Arrays as Arguments Two-Dimensional Arrays Common.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 6: Functions by.
Chapter 9: Arrays and Strings
Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda Chapter 10: Pointers.
Chapter 8 Arrays and Strings
Lesson 7 Arrays CS 1 Lesson 7 -- John Cole1. Arrays Hold Multiple Values Array: variable that can store multiple values of the same type Values are stored.
Chapter 7: Arrays. Outline Array Definition Access Array Array Initialization Array Processing 2D Array.
Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda Modified by use by the MSU CMPS Dept. Chapter 10:
C++ Pointers Copies from SEE C++ programming course and from Starting Out with C++: Early Objects, 8/E by Tony Gaddis, Judy Walters and Godfrey Muganda.
 2006 Pearson Education, Inc. All rights reserved Arrays.
Chapter 8 Arrays and Strings
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
C++ Programming: From Problem Analysis to Program Design, Fifth Edition Arrays.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 11 Structured Data.
Arrays Chapter 8.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 11: Structured Data.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C-Strings, Arrays, and String Class Review.
Lecture: Arrays. 7.1 Arrays Hold Multiple Values.
Copyright © 2012 Pearson Education, Inc. Chapter 11: Structured Data.
Section 5 - Arrays. Problem solving often requires information be viewed as a “list” List may be one-dimensional or multidimensional List is implemented.
1 Chapter 7 Arrays. 2 Topics 7.1 Arrays Hold Multiple Values 7.2 Accessing Array Elements 7.3 No Bounds Checking in C Array Initialization 7.5 Processing.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 8: Arrays Starting Out with C++ Early Objects Seventh Edition by.
+ Chapter 8: Arrays Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda.
A First Book of C++: From Here To There, Third Edition2 Objectives You should be able to describe: One-Dimensional Arrays Array Initialization Arrays.
Copyright 2004 Scott/Jones Publishing Alternate Version of STARTING OUT WITH C++ 4 th Edition Chapter 8 Arrays.
Chapter 7: Arrays. Outline Array Definition Access Array Array Initialization Array Processing 2D Array.
Chapter 8: Arrays Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda.
Copyright © 2002 W. A. Tucker1 Chapter 9 Lecture Notes Bill Tucker Austin Community College COSC 1315.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 6: Functions Starting Out with C++ Early Objects Eighth Edition.
 2008 Pearson Education, Inc. All rights reserved. 1 Arrays and Vectors.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 7 Arrays.
1 Chapter 12 Arrays. 2 C++ Data Types structured array struct union class address pointer reference simple integral enum char short int long bool floating.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 8: Arrays by Tony.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 8: Arrays Starting Out with C++ Early Objects Seventh Edition by.
Copyright 2003 Scott/Jones Publishing Alternate Version of Starting Out with C++, Third Edition Chapter 8 Arrays.
Arrays Chapter 12. Overview Arrays and their properties Creating arrays Accessing array elements Modifying array elements Loops and arrays.
Chapter 7 Arrays Csc 125 Introduction to C++. Topics Arrays Hold Multiple Values Array Operations Arrays as function arguments Two-dimensional arrays.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 7: Arrays.
Arrays Chapter 7. Arrays Hold Multiple Values Array: variable that can store multiple values of the same type Values are stored in adjacent memory locations.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide 7- 1.
Lecture 8 – Array (Part 1) FTMK, UTeM – Sem /2014.
Copyright © 2012 Pearson Education, Inc. Chapter 7: Arrays.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 7. 12: Structures Starting Out with C++ Early Objects Eighth.
Copyright © 2013 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with Programming Logic & Design Third Edition by Tony Gaddis.
ARRAYS (C) KHAERONI, M.SI. OVERVIEW Introduction to Arrays Arrays in Functions Programming with Arrays Multidimensional Arrays.
Chapter 7: Arrays. 7.1 Arrays Hold Multiple Values.
Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Arrays Hold Multiple Values 7.1.
Lecture 2 Arrays. Topics 1 Arrays hold Multiple Values 2 Accessing Array Elements 3 Inputting and Displaying Array Contents 4 Array Initialization 5 Using.
Chapter 8: Arrays. Arrays Hold Multiple Values Array: variable that can store multiple values of the same type Values are stored in adjacent memory locations.
Objectives You should be able to describe: One-Dimensional Arrays
A FIRST BOOK OF C++ CHAPTER 7 ARRAYS. OBJECTIVES In this chapter, you will learn about: One-Dimensional Arrays Array Initialization Arrays as Arguments.
Alternate Version of Starting Out with C++, Third Edition
Chapter 7: Arrays.
Lecture 6 Arrays and Vectors
Chapter 7: Arrays.
Chapter 8: Arrays Starting Out with C++ Early Objects Ninth Edition
Lecture 3 C & C++ programming.
New Structure Recall “average.cpp” program
Chapter 7: Arrays.
7 Chapter Arrays.
Chapter 8: Arrays Starting Out with C++ Early Objects Eighth Edition
Standard Version of Starting Out with C++, 4th Edition
Chapter 8: Arrays Starting Out with C++ Early Objects Ninth Edition
Presentation transcript:

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 8: Arrays Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Topics 8.1 Arrays Hold Multiple Values 8.2 Accessing Array Elements 8.3 Inputting and Displaying Array Contents 8.4 Array Initialization 8.5 Processing Array Contents 8.6 Using Parallel Arrays 8-2

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Topics (continued) 8.7 The typedef Statement 8.8 Arrays as Function Arguments 8.9 Two-Dimensional Arrays 8.10 Arrays with Three or More Dimensions 8.12 Arrays of Class Objects 8-3

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8.1 Arrays Hold Multiple Values Array: variable that can store multiple values of the same type Values are stored in adjacent memory locations Declared using [] operator const int ISIZE = 5; int test[ISIZE]; … or int test[5]; 8-4

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Array Storage in Memory The definition int test[5]; allocates the following memory 8-5 Element 0Element 1Element 2Element 3Element 4

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Array Terminology In the definition int test[5]; –int is the data type of the array elements –test is the name of the array –5, in [5], is the size declarator. It shows the maximum number of elements in the array (i.e., array capacity). –The size of an array is the number of bytes allocated for it (number of elements) * (bytes needed for each element) 8-6

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Array Terminology Examples Examples: Assumes int uses 4 bytes and double uses 8 bytes const int ISIZE = 5, DSIZE = 10; int test[ISIZE]; // holds 5 ints, array // occupies 20 bytes double volumes[DSIZE]; // holds 10 doubles // array is 80 bytes 8-7

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8.2 Accessing Array Elements Each array element is a variable whose “name” contains a subscript that uniquely identifies the element. Name of 3 rd element array test is test[2], ”test-sub-two” Subscripts start at subscripts

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Accessing Array Elements Array elements are regular variables of the base data type. test[0] = 79; cout << test[0]; cin >> test[1]; test[4] = test[0] + test[1]; cout << test; // illegal due to ?? test

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8.3 Inputting and Displaying Array Contents cout and cin can be used to display values from and store values into an array int test[5]; // 5-element array cout << "Enter first test score "; cin >> test[0]; 8-10

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Array Subscripts Array subscript can be an integer constant, integer variable, or integer expression Examples: Subscript is cin >> test[3]; int constant cout << test[i]; int variable cout << test[i+j]; int expression cin >> test[test[0]]; int expression 8-11

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Inputting and Displaying All Array Elements To access each element of an array –Use a (for) loop –The loop control variable sequence must be the array valid subscripts, e.g., 0,1,2,… –A different array element will be referenced each time through the loop for (i = 0; i < 5; i++) sum = sum + test[i]; 8-12

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley WARNING!! No Bounds Checking C++ does not check that an array subscript is in range An invalid array subscript can cause program to overwrite other memory Example: const int ISIZE = 3; int i = 4; int num[ISIZE]; num[i] = 25; C++ Segmentation error!! 8-13 num [0] [1] [2] 25

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Off-By-One Errors Most often occur when a program accesses data one position beyond the end of an array, or misses the first or last element of an array. Don’t confuse the ordinal number of an array element (first, second, third) with its subscript (0, 1, 2) 8-14

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8.4 Array Initialization Can be initialized during program execution with assignment statements test[0] = 79; test[1] = 82; // etc. Can be initialized at array definition with an initialization list int test[5] = {79,82,91,77,84}; 8-15

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Partial Array Initialization If array is initialized at definition with fewer values than the size declarator of the array, remaining elements will be set to 0 or NULL int test[5] = {79, 82}; Initial values used in order; cannot skip over elements to initialize noncontiguous range

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Implicit Array Sizing Can determine array size by the size of the initialization list short quizzes[]={12,17,15,11}; Must use either array size declarator or initialization list when array is defined

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8.5 Processing Array Contents Array elements can be –treated as ordinary variables of the same type as the array –used in arithmetic operations, in relational expressions, etc. Example: if (principalAmt[3] >= 10000) interest = principalAmt[3] * intRate1; else interest = principalAmt[3] * intRate2; 8-18

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Using Increment and Decrement Operators with Array Elements int test[15]; When using ++ and -- operators, don’t confuse the element with the subscript test[i]++; // increments test[i], but has // no effect on i. test[i++]; // increments i, but has // no effect on test array. 8-19

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Copying One Array to Another Can not copy with an assignment statement: tests2 = test; //won’t work Must instead use a loop to copy element- by-element: for (int k; k < ISIZE; k++) tests2[k] = test[k]; 8-20

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Are Two Arrays Equal? Also, cannot compare in a single expression: if (tests2 == test) Use a while loop with a boolean variable: bool Equal = true; int k = 0; while (Equal && k < ISIZE) { if(test[k] != tests2[k]) Equal = false; } 8-21

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Sum, Average of Array Elements Use a simple loop to add together array elements float average, sum = 0; for(int t=0; t< ISIZE; t++) sum += test[t]; Once summed, average can be computed average = sum/ISIZE; 8-22

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Largest Array Element Use a loop to examine each element and find the largest element (i.e., one with the largest value) int largest = test[0]; for (int t = 1; t < ISIZE; t++) { if (test[t] > largest) largest = test[t]; } cout << "Highest score is " << largest; A similar algorithm exists to find smallest. 8-23

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Partially-Filled Arrays The exact amount of data may not be known when a program is written. Programmer estimates maximum amount of data (capacity), and sizes array accordingly. Programmer must keep track of how many array elements are actually used – to avoid exceeding array capacity (segmentation error) 8-24

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C-Strings and string Objects Can be processed using array name –Entire string at once, or –One element at a time by using a subscript string city; cout << "Enter city name: "; cin >> city; 8-25 'S''a''l''e''m' city[0]city[1]city[2]city[3]city[4]

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8.6 Using Parallel Arrays Parallel arrays: two or more arrays that contain related data Subscript is used to relate arrays –elements at same subscript are related The arrays do not have to hold data of the same type 8-26

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Parallel Array Example const int ISIZE = 5; string name[ISIZE]; // student name float average[ISIZE]; // course average char grade[ISIZE]; // course grade name average grade

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Parallel Array Processing const int ISIZE = 5; string name[ISIZE]; // student name float average[ISIZE]; // course average char grade[ISIZE]; // course grade... for (int i = 0; i < ISIZE; i++) cout << " Student: " << name[i] << " Average: " << average[i] << " Grade: " << grade[i] << endl; 8-28

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8.7 The typedef Statement Creates an alias for a data type. Format: typedef existingType newName; Example: typedef float Money; Money Paycheck[ISIZE]; // array of // floats. 8-29

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Uses of typedef Can make code more readable. Can be used to create alias for array of a particular type // Define yearArray as a data type // that is an array of 12 ints typedef int yearArray[MONTHS]; // Create two of these arrays yearArray highTemps, lowTemps; 8-30

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8.8 Arrays as Function Arguments To declare a function with an array parameter, use empty [] to indicate the argument is an array. To pass an array argument to a function, just use the array name // Function prototype void showScores(int []); // Function header void showScores(int test[]) // Function call showScores(test); 8-31

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Passing an Array Element Passing a single array element to a function is no different than passing a regular variable of that data type Function does not need to know that the value it receives is coming from an array displayValue(score[i]); // call void displayValue(int item) // header { cout << item << endl; } 8-32

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Passing an Entire Array Use the array name, without any brackets, as the argument Can also pass the array size so the function knows how many elements to process showScores(test, 5); // call void showScores(int[], int); // prototype void showScores(int A[], int size) // header 8-33

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Using typedef with a Passed Array Can use typedef to simplify function prototype and heading // Make intArray an integer array // of unspecified size typedef int intArray[]; // Function prototype void showScores(intArray, int); // Function header void showScores(intArray test, int size) 8-34

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Modifying Arrays in Functions Array parameters are passed by reference Changes made to array in a function are made to the actual array in the calling function Must be careful that an array is not inadvertently changed by a function 8-35

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8.9 Two-Dimensional Arrays Can define one array for multiple sets of data Like a table in a spreadsheet Use two size declarators in definition int exam[4][3]; 8-36 Number of rows Number of cols

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Two-Dimensional Array Representation int exam[4][3]; Must use two subscripts to access element exam[2][2] = 86; 8-37 exams[0][0]exams[0][1]exams[0][2] exams[1][0]exams[1][1]exams[1][2] exams[2][0]exams[2][1]exams[2][2] exams[3][0]exams[3][1]exams[3][2] columns rowsrows

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Initialization at Definition Two-dimensional arrays are initialized row- by-row int exam[2][2] = { {84, 78}, {92, 97} }; exam[0] is row 1, an int array

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Passing a Two-Dimensional Array to a Function Use array name as argument in function call getExams(exam, 2); Use empty [] for row and a size declarator for col in the prototype and header // Prototype, where #cols is 2 void getExams(int[][2], int); // Header void getExams (int Ex[][2], int rows) 8-39

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Using typedef with a Two-Dimensional Array Can use typedef for simpler notation typedef int intExams[][2];... // Function prototype void getExams(intExams, int); // Function header void getExams(intExams exam, int rows) 8-40

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 2D Array Traversal Use nested loops, one for row and one for column, to visit each array element. for (int r=0; r<NROWS; r++) for (int c=0; c<NCOLS; c++) process exam[r][c] … 8-41

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8.10 Arrays with Three or More Dimensions Can define arrays with any number of dimensions short rectSolid [2][3][5]; double timeGrid[3][4][3][4]; When used as parameter, specify size of all but 1 st dimension void getRectSolid(short [][3][5]); 8-42

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8.14 Arrays of Class Objects Class objects can also be used as array elements class Square { private: int side; public: Square(int s = 1) { side = s; } int getSide() { return side; } }; Square shapes[10]; // Create array of 10 // Square objects 8-43

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Arrays of Class Objects First, use an array subscript [ ] to access a specific object in the array Then, use dot. operator to access the member of that object for (i = 0; i < 10; i++) cout << shapes[i].getSide() << endl; 8-44 member function object

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Arrays of Structures Structures can be used as array elements struct Student { int studentID; string name; short year; double gpa; }; Student Class[30]; // Holds 30 // Student records.

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-46 Arrays of Structures Use array subscript [ ] to access a specific structure in the array Then use dot. operator to access members of that structure cin >> Class[25].studentID; cout << Class[i].name << " has GPA " << Class[i].gpa << endl;

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 8: Arrays Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda