Professional Documents
Culture Documents
C++ Programming From Problem Analysis To Program Design 6th Edition Malik Solutions Manual 1
C++ Programming From Problem Analysis To Program Design 6th Edition Malik Solutions Manual 1
C++ Programming From Problem Analysis To Program Design 6th Edition Malik Solutions Manual 1
Chapter 8
Arrays and Strings
At a Glance
• Objectives
• Teaching Tips
• Quick Quizzes
• Additional Projects
• Additional Resources
• Key Terms
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8-2
Lecture Notes
Overview
The next few chapters will introduce and focus on structured data types. Chapter 8
discusses the array data type in detail. Students will become familiar with declaring and
manipulating arrays, as well as using arrays as parameters. They will also learn about
the limitations of arrays. Students will examine character arrays and learn how to
process them using string functions. Finally, this chapter examines more complex array
types, including parallel and multidimensional arrays.
Objectives
In this chapter, the student will:
• Learn about arrays
• Explore how to declare and manipulate data into arrays
• Learn about “array index out of bounds”
• Become familiar with the restrictions on array processing
• Discover how to pass an array as a parameter to a function
• Learn how to search an array
• Learn how to sort an array
• Learn about C-strings
• Examine the use of string functions to process C-strings
• Discover how to input data into – and output data from – a C-string
• Learn about parallel arrays
• Discover how to manipulate data in a two-dimensional array
• Learn about multidimensional arrays
Teaching Tips
Introduction
1. Review the concept of a simple data type, and introduce the concept of a structured data
type.
2. Describe the need for an array when processing items that are the same data type and
represent the same conceptual item.
Arrays
1. Define the array data type and describe its uses. In particular, discuss the syntax of one-
dimensional arrays. Illustrate with Example 8-1.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8-3
Introduce your students to arrays by emphasizing that an array can only store
elements that are all of the same data type; in other words, they are not an all-
Teaching
purpose storage container. Point out that they will learn about more complex data
Tip
types later in the text – such as containers that hold generic data types or
complex data types with multiple variables and operations.
1. Discuss the syntax involved in accessing array components. Review the use of the array
subscripting operator with the code snippets in this section.
2. Explain how to process an array using a for loop. Step through Example 8-3 to
illustrate how a for loop can be used to perform the operations described above.
Discuss some common coding errors that can result in an out of bounds array
Teaching
index. Stress that it is the programmer’s responsibility to verify that a program is
Tip
not attempting to access an array outside of its limits.
1. Describe the syntax involved with initializing an array during its declaration.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8-4
1. Explain how to partially initialize an array. Note that the non-initialized elements are
initialized to a default value; for example, elements of data type int are initialized to
zero.
1. Emphasize that C++ does not allow aggregate operations on arrays. Explain that
therefore, arrays must be processed one element at a time, which is usually done with a
loop.
1. Explain that C++ arrays are passed by reference only. Illustrate how this is
accomplished using Example 8-5.
2. Mention the usefulness of passing an additional parameter that specifies how many
elements a function should process.
1. Discuss the use of constant arrays as parameters when the contents of the array should
not be modified. Use Example 8-6 to illustrate parameter passing using both non-
constant and constant arrays.
Explain in more detail why C++ only allows arrays to be passed as reference
parameters. Discuss issues such as memory management. Ask your students if
Teaching
there are any disadvantages to this approach. For example, how would they
Tip
handle a situation in which they would like an array to be modifiable in the
calling function but not in the called function?
1. Explain that the base address of an array is the address of the first element. Using
Figure 8-7, discuss how arrays are stored in memory.
2. Explain how the base address is used when passing arrays as parameters.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8-5
Students may find that the details of manipulating memory are complicated. Note
Teaching that C and C++ programmers are more accustomed to manipulating memory than
Tip programmers in some other programming languages, particularly with respect to
arrays.
1. Note that functions cannot return a value of the type array. Illustrate how arrays are
processed in a function while being returned using Example 8-7.
Ask students why they think C++ does not allow functions to return a value of
Teaching
the type array. Relate this requirement to the requirement of passing arrays as
Tip
reference parameters.
1. Explain that C++ allows any integral type to be used as an array index. Therefore,
although the int type is most often associated with array indices, the enum type can
also be used effectively with array indices. Demonstrate with an example from this
section.
1. Discuss the use of a constant value to declare the size of an array. Also, describe how a
typedef statement can be used to declare an array.
Discuss the advantages of using a named constant for sizing an array. Stress that
Teaching
changing the size of an array is much easier and less error-prone when only one
Tip
value needs to be modified at the beginning of the program.
Quick Quiz 1
1. Define an array.
Answer: An array is a collection of fixed number components all of the same data type.
2. The value specifies the position of an element of a component
in an array.
Answer: index
Selection Sort
1. Introduce the selection sort algorithm. Use Figures 8-9 through 8-11 to illustrate this
algorithm. Review the code in Example 8-9.
2. Define a C++ C-string. Explain the similarities and differences between a character
array and a C-string. In particular, note the use of the null character to terminate C-
strings.
Spend some additional time discussing the differences and similarities between
C-strings and character arrays. Students may wonder why C-strings are necessary
Teaching
at all. Explain that the C-string was originally a part of the C programming
Tip
language. Also, reiterate that the string data type is provided in the C++
library, but that it is not part of the language.
String Comparison
1. Explain how C-strings are compared. Demonstrate how the strcmp function works
using Example 8-10.
1. Emphasize that although aggregate functions are not allowed on most C-string
operations (just as with the array type), the exception to this rule is input/output
operations.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8-7
String Input
1. Provide an example of how to input a C-string into a variable. Then discuss how to
input a C-string with blanks using the get function.
Teaching Note that the get function is overloaded to provide aggregate input operations
Tip for C-strings.
String Output
1. Discuss how a program can allow a user to specify an input or output file at execution
time. Note the syntax involved in using a character array to retrieve the filename.
1. Review the differences between strings and C-strings and explain how to convert a
string into a C-string using the c_str method.
Note that the use of c_str function is required to convert strings into a null-
Teaching terminated form. This is because the open function is compatible with C-strings,
Tip not with the programmer-defined string type. Mention that this is an example
of maintaining compatibility with the C language and older C++ compilers.
Quick Quiz 2
1. Define a character array.
Answer: an array whose components are of type char
4. True or False: C++ does not allow any aggregate operations on C-strings.
Answer: False
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8-8
Parallel Arrays
1. Define parallel arrays and describe situations in which parallel arrays are useful.
Illustrate with the code snippet in this section.
2. Discuss the syntax for declaring a two-dimensional array, and use Figure 8-13 to
demonstrate this.
1. Give some examples of how to access elements in a two-dimensional array. Use Figure
8-14 to illustrate.
2. Use the example presented in the book along with Figure 8-15 to illustrate this.
Teaching Note that the enum type for indices in a two-dimensional array may be different
Tip for rows and columns.
3. Define row and column processing. Use the code snippets in this section to illustrate
two-dimensional array processing of an entire array, a row of an array, and a column of
an array.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8-9
Verify that your students understand array processing using nested loops because
Teaching
the operations that are discussed in the following sections all rely on this
Tip
processing algorithm.
Initialization
1. Explain how to initialize specific rows of an array, as well as how to initialize an entire
array.
1. Describe how to use a nested loop to print out the components of an array.
Input
1. Explain how to input data into specific components of an array and into an entire array.
Sum by Row
1. Describe how to use nested loops to find the sum of the components in each row of a
two-dimensional array.
Sum by Column
1. Describe how to use nested loops to find the sum of the components in each column of
a two-dimensional array.
1. Use the code snippets in this section to discuss how to determine the largest element in
each row and column.
1. Discuss how a two-dimensional array is stored in memory using row order form.
Emphasize why the second dimension of an array must have a size value when
Teaching
passing the array as a parameter. Ask your students if they think there are any
Tip
advantages to specifying the first dimension as well.
Arrays of Strings
1. Explain how using an array to store strings has many useful applications.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8-10
2. Note that strings can be stored in arrays either as a string type or as a character array.
1. Using Figures 8-19 and 8-20, explain how a two-dimensional array of strings can be
created using character arrays.
Teaching Ask your students if they prefer using arrays of strings or arrays of character
Tip arrays. What are the advantages and disadvantages of each?
Multidimensional Arrays
1. Define n-dimensional arrays. Discuss the general syntax for declaring an array of n
dimensions.
3. Encourage students to walk through the Programming Examples at the end of this
chapter with a partner to consolidate their understanding of arrays.
Quick Quiz 3
1. Define a two-dimensional array.
Answer: A collection of a fixed number of components arranged in rows and columns,
wherein all components are of the same type.
4. When storing a two-dimensional array in computer memory, C++ uses the form.
Answer: row order
2. What are some ways to prevent out of bounds errors when reading input into C-strings?
3. Discuss some useful applications for n-dimensional arrays, such as graphical 3-D or
biotechnology applications.
Additional Projects
1. Ask your students to write a program that keeps track of important birthdays. They may
implement it with a one-dimensional array with enumeration type indices, with a two-
dimensional array, or with parallel arrays. The user inputs the name and date
information in a menu-driven function. The data is displayed in a tabular format at the
end of the program execution.
2. Ask your students to write a program that lists European, Middle-Eastern, or Asian
countries and their capitals. The program retrieves this information from an input file
that the user specifies during program execution. The data can be stored in a one-
dimensional array with enumeration type indices, a two-dimensional array, or a parallel
array. The data is displayed in a tabular format at the end of the program execution.
Additional Resources
1. Arrays:
www.cplusplus.com/doc/tutorial/arrays.html
3. C Strings:
www.cprogramming.com/tutorial/lesson9.html
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8-12
Key Terms
Aggregate operation: any operation on an array that manipulates the entire array as a
single unit
Array: a collection of a fixed number of elements (called components) in which all of
the elements must be of the same data type
Array index in bounds: the index is in bounds if it is >= 0 and <= ARRAY_SIZE –
1
Array index out of bounds: the index is out of bounds if it is < 0 or >
ARRAY_SIZE – 1
Array subscripting operator [ ]: used to access the array element at the position
number contained within the square brackets
Base address: the memory address of the first component in an array
Character array: an array whose components are of the type char
Column processing: processing of a particular column of a two-dimensional array
Dynamic arrays: arrays that are created during program execution using pointers
Finding the sum and average of an array: code that finds the sum and average of the
values in the array
Index: any expression whose value is a nonnegative integer and which is used for
accessing an array component
Initializing: the process of using a loop to initialize every component of the array
n-dimensional array: a collection of a fixed number of components arranged in n
dimensions (n >= 1)
One-dimensional array: an array in which the components are arranged in a list form
Parallel arrays: two (or more) arrays with corresponding components holding related
information
Row order form: refers to the manner in which a two-dimensional array is stored; the
first row is stored first, followed by the second row, followed by the third row, and so
on
Row processing: processing of a particular row of a two-dimensional array
Selection sort: a search method in which the array is searched for the smallest value,
which is swapped with the value at the top of the array; then repeated for the next
smallest value, and so on
Sequential or linear search: searches an array sequentially starting with the first
element; continues until the item is found or there are no more elements
Simple data type: signifies that a variable can store only one value at a time
Structured data type: each data item is a collection of other data items
Two-dimensional array: a collection of a fixed number of components arranged in
rows and columns (that is, in two dimensions), wherein all components are of the same
type