C++ Programming From Problem Analysis To Program Design 6th Edition Malik Solutions Manual 1

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8-1

C++ Programming From Problem


Analysis to Program Design 6th Edition
Malik
Full download at link:

Test bank: https://testbankpack.com/p/test-bank-for-c-programming-from-


problem-analysis-to-program-design-6th-edition-by-malik-isbn-
1133626386-9781133626381/

Solution Manual: https://testbankpack.com/p/solution-manual-for-c-


programming-from-problem-analysis-to-program-design-6th-edition-by-
malik-isbn-1133626386-9781133626381/

Chapter 8
Arrays and Strings

At a Glance

Instructor’s Manual Table of Contents


• Overview

• Objectives

• Teaching Tips

• Quick Quizzes

• Class Discussion Topics

• 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.

Accessing Array Components

1. Discuss the syntax involved in accessing array components. Review the use of the array
subscripting operator with the code snippets in this section.

Students might be confused when looking at code that performs arithmetic


operations on elements that are accessed by the array subscripting operator. Note
Teaching that students have already had experience with the array subscripting operator
Tip when they manipulated characters in a string. Stress that the operations that are
allowed on the values stored in an array can also be performed when accessing
the element with the array subscripting operator.

Processing One-Dimensional Arrays

1. Describe some common operations typically performed on arrays, such as initialization,


input/output, and finding the largest/smallest element.

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.

Array Index Out of Bounds

1. Explain the consequences of using an array index that is out of bounds.

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.

Array Initialization During Declaration

1. Describe the syntax involved with initializing an array during its declaration.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8-4

Partial Initialization of Arrays During Declaration

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.

Discuss situations where it might be useful to partially initialize arrays, e.g.,


Teaching
when you have some information available before execution time that will be
Tip
necessary for proper processing.

Some Restrictions on Array Processing

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.

Arrays as Parameters to Functions

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.

Constant Arrays as Formal Parameters

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?

Base Address of an Array and Array in Computer Memory

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.

Functions Cannot Return a Value of the Type Array

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.

Integral Data Type and Array Indices

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.

Other Ways to Declare Arrays

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

3. True or False: In C++, the array index starts at 1.


Answer: False
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8-6

4. Define an aggregate operation as it relates to arrays.


Answer: An aggregate operation on an array is any operation that manipulates the entire
array as a single unit.

Searching an Array for a Specific Item


1. Introduce the sequential (or linear) search algorithm using the example in Figure 8-8.
Review the seqSearch() function on Page 529 and in Example 8-8.

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.

C-strings (Character Arrays)

1. Define a character array.

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.

3. Discuss some common C-string functions, as listed in Table 8-1.

String Comparison

1. Explain how C-strings are compared. Demonstrate how the strcmp function works
using Example 8-10.

Reading and Writing Strings

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. Briefly illustrate how to output C-strings using an output stream variable.

Specifying Input/Output Files at Execution Time

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.

string Type and Input/Output Files

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

2. How is the null character represented in C++?


Answer: '\0'
3. The header file provides functions for manipulating C-strings.
Answer: <cstring>
cstring

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.

Two- and Multidimensional Arrays


1. Explain the concept of two-dimensional arrays by comparing them to tables. Use Figure
8-12 to illustrate.

2. Discuss the syntax for declaring a two-dimensional array, and use Figure 8-13 to
demonstrate this.

Provide some more examples of how a two-dimensional array resembles a table.


Teaching Point out one difference: all of the elements in both the rows and columns must
Tip be of the same data type in a two-dimensional array. This is not a requirement in
conventional tables.

Accessing Array Components

1. Give some examples of how to access elements in a two-dimensional array. Use Figure
8-14 to illustrate.

Two-Dimensional Array Initialization During Declaration

1. Explain the syntax involved in initializing a two-dimensional array during declaration.

2. Use the example presented in the book along with Figure 8-15 to illustrate this.

Two-Dimensional Arrays and Enumeration Types

1. Explain how to use enumeration types as indices in a two-dimensional array. Discuss


situations in which this might be useful, using Figures 8-16 and 8-17.

Teaching Note that the enum type for indices in a two-dimensional array may be different
Tip for rows and columns.

2. Explain how to process a two-dimensional array using nested loops.

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.

Print

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.

Largest Element in Each Row and Each Column

1. Use the code snippets in this section to discuss how to determine the largest element in
each row and column.

Passing Two-Dimensional Arrays as Parameters to Functions

1. Discuss how a two-dimensional array is stored in memory using row order form.

2. Explain how to pass two-dimensional arrays as parameters using Example 8-11.

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.

Arrays of Strings and the string Type

1. Describe how to perform operations on an array of strings.

Arrays of Strings and C-Strings (Character Arrays)

1. Using Figures 8-19 and 8-20, explain how a two-dimensional array of strings can be
created using character arrays.

2. Describe the operations available for an array of 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?

Another Way to Declare a Two-Dimensional Array

1. Explain how to declare a two-dimensional array with the typedef statement.

Multidimensional Arrays

1. Define n-dimensional arrays. Discuss the general syntax for declaring an array of n
dimensions.

2. Describe how to process n-dimensional arrays with nested loops.

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.

2. True or False: To access a component of a two-dimensional array, you need a pair of


indices.
Answer: True

3. You can output the contents of a two-dimensional array by using loops.


Answer: nested
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 8-11

4. When storing a two-dimensional array in computer memory, C++ uses the form.
Answer: row order

Class Discussion Topics


1. What are some possible reasons for not permitting aggregate processing on arrays in
C++?

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

2. Introduction to C++ Arrays:


http://www.functionx.com/cpp/Lesson12.htm

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

You might also like