Chapter 8 covers arrays and strings in C++, focusing on declaring, manipulating, and processing one-dimensional and two-dimensional arrays. It explains concepts such as array indices, passing arrays to functions, and the differences between C-strings and the string type. The chapter also highlights restrictions on array processing and provides examples for initializing and accessing array elements.
Chapter 8 covers arrays and strings in C++, focusing on declaring, manipulating, and processing one-dimensional and two-dimensional arrays. It explains concepts such as array indices, passing arrays to functions, and the differences between C-strings and the string type. The chapter also highlights restrictions on array processing and provides examples for initializing and accessing array elements.
Objectives • In this chapter, you will: – Learn about arrays – Declare and manipulate data into arrays – Learn about “array index out of bounds” – Learn about the restrictions on array processing – Pass an array as a parameter to a function – Search and sort an array
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 2
Objectives (cont’d.) • In this chapter, you will (cont’d.): – Learn about C-strings – Use string functions to process C-strings – Input data into—and output data from—a C-string – Learn about parallel arrays – Manipulate data in a two-dimensional array – Learn about multidimensional arrays
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 3
Introduction • Simple data type: variables of these types can store only one value at a time • Structured data type: a data type in which each data item is a collection of other data items
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 4
Arrays • Array: a collection of a fixed number of components, all of the same data type • One-dimensional array: components are arranged in a list form • Syntax for declaring a one-dimensional array:
• intExp: any constant expression that
evaluates to a positive integer C++ Programming: From Problem Analysis to Program Design, Sixth Edition 5 Accessing Array Components • General syntax:
• indexExp: called the index
– An expression with a nonnegative integer value • Value of the index is the position of the item in the array • []: array subscripting operator – Array index always starts at 0 C++ Programming: From Problem Analysis to Program Design, Sixth Edition 6 Accessing Array Components (cont’d.)
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 7
Accessing Array Components (cont’d.)
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8
Processing One-Dimensional Arrays • Basic operations on a one-dimensional array: – Initializing – Inputting data – Outputting data stored in an array – Finding the largest and/or smallest element • Each operation requires ability to step through elements of the array – Easily accomplished by a loop
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9
Processing One-Dimensional Arrays (cont’d.) • Given the declaration: int list[100]; //array of size 100 int i; • Use a for loop to access array elements: for (i = 0; i < 100; i++) //Line 1 cin >> list[i]; //Line 2
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 10
Array Index Out of Bounds • Index of an array is in bounds if the index is >=0 and <= ARRAY_SIZE-1 – Otherwise, the index is out of bounds • In C++, there is no guard against indices that are out of bounds
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 11
Array Initialization During Declaration • Arrays can be initialized during declaration – Values are placed between curly braces – Size determined by the number of initial values in the braces • Example: double sales[] = {12.25, 32.50, 16.90, 23, 45.68};
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 12
Partial Initialization of Arrays During Declaration • The statement: int list[10] = {0}; – Declares an array of 10 components and initializes all of them to zero • The statement: int list[10] = {8, 5, 12}; – Declares an array of 10 components and initializes list[0] to 8, list[1] to 5, list[2] to 12 – All other components are initialized to 0 C++ Programming: From Problem Analysis to Program Design, Sixth Edition 13 Some Restrictions on Array Processing • Aggregate operation: any operation that manipulates the entire array as a single unit – Not allowed on arrays in C++ • Example:
• Solution:
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 14
Arrays as Parameters to Functions • Arrays are passed by reference only • Do not use symbol & when declaring an array as a formal parameter • Size of the array is usually omitted – If provided, it is ignored by the compiler • Example:
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 15
Constant Arrays as Formal Parameters • Can prevent a function from changing the actual parameter when passed by reference – Use const in the declaration of the formal parameter • Example:
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 16
Base Address of an Array and Array in Computer Memory • Base address of an array: address (memory location) of the first array component • Example: – If list is a one-dimensional array, its base address is the address of list[0] • When an array is passed as a parameter, the base address of the actual array is passed to the formal parameter
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 17
Functions Cannot Return a Value of the Type Array • C++ does not allow functions to return a value of type array
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 18
Integral Data Type and Array Indices • C++ allows any integral type to be used as an array index – Improves code readability • Example:
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 19
Two- and Multidimensional Arrays • Two-dimensional array: collection of a fixed number of components (of the same type) arranged in two dimensions – Sometimes called matrices or tables • Declaration syntax:
– intExp1 and intExp2 are expressions with
positive integer values specifying the number of rows and columns in the array C++ Programming: From Problem Analysis to Program Design, Sixth Edition 20 Accessing Array Components • Accessing components in a two-dimensional array:
– Where indexExp1 and indexExp2 are
expressions with positive integer values, and specify the row and column position • Example: sales[5][3] = 25.75;
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 21
Accessing Array Components (cont’d.)
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 22
Two-Dimensional Array Initialization During Declaration • Two-dimensional arrays can be initialized when they are declared: – Elements of each row are enclosed within braces and separated by commas – All rows are enclosed within braces – For number arrays, unspecified elements are set to 0
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 23
Two-Dimensional Arrays and Enumeration Types • Enumeration types can be used for array indices:
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 24
Processing Two-Dimensional Arrays • Ways to process a two-dimensional array: – Process entire array – Row processing: process a single row at a time – Column processing: process a single column at a time • Each row and each column of a two- dimensional array is a one-dimensional array – To process, use algorithms similar to processing one-dimensional arrays C++ Programming: From Problem Analysis to Program Design, Sixth Edition 25 Initialization • Examples: – To initialize row number 4 (fifth row) to 0:
– To initialize the entire matrix to 0:
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 26
Print • Use a nested loop to output the components of a two dimensional array:
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 27
Input • Examples: – To input into row number 4 (fifth row):
– To input data into each component of matrix:
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 28
Sum by Row • Example: – To find the sum of row number 4:
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 29
Sum by Column • Example: – To find the sum of each individual column:
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 30
Largest Element in Each Row and Each Column • Example: – To find the largest element in each row:
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 31
Passing Two-Dimensional Arrays as Parameters to Functions • Two-dimensional arrays are passed by reference as parameters to a function – Base address is passed to formal parameter • Two-dimensional arrays are stored in row order • When declaring a two-dimensional array as a formal parameter, can omit size of first dimension, but not the second
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 32
Arrays of Strings • Strings in C++ can be manipulated using either the data type string or character arrays (C- strings) • On some compilers, the data type string may not be available in Standard C++ (i.e., non-ANSI/ISO Standard C++)
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 33
Arrays of Strings and the string Type • To declare an array of 100 components of type string: string list[100]; • Basic operations, such as assignment, comparison, and input/output, can be performed on values of the string type • The data in list can be processed just like any one-dimensional array
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 34
Arrays of Strings and C-Strings (Character Arrays)
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 35
Summary • Array: structured data type with a fixed number of components of the same type – Components are accessed using their relative positions in the array • Elements of a one-dimensional array are arranged in the form of a list • An array index can be any expression that evaluates to a nonnegative integer – Must always be less than the size of the array C++ Programming: From Problem Analysis to Program Design, Sixth Edition 36 Summary (cont’d.) • To access an element of a two-dimensional array, you need a pair of indices: – One for row position, one for column position • In row processing, a two-dimensional array is processed one row at a time • In column processing, a two-dimensional array is processed one column at a time
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 37