Problem Solving with C++

ISBN-10: 0321412699

ISBN-13: 9780321412690

Edition: 6th 2007 (Revised)

Authors: Walter Savitch

List price: $103.00
30 day, 100% satisfaction guarantee

If an item you ordered from TextbookRush does not meet your expectations due to an error on our part, simply fill out a return request and then return it by mail within 30 days of ordering it for a full refund of item cost.

Learn more about our returns policy


Introductory Programming / C++ Problem Solving with C++, Sixth Edition Walter Savitch Walter Savitchrsquo;s Problem Solving with C++ is the most widely used textbook for the introduction to programming in C++ course. These are just a few of the reasons why: ldquo;My students and I love this textbook. Savitch makes the material so accessible, and he does it with a great sense of humor that we all enjoy. My students tell me that they finally have purchased a college textbook where theyrsquo;ve gotten their full moneyrsquo;s worth.rdquo; Jennifer Perkins, University of Arkansas at Little Rock ldquo;Our school has used the Savitch text for many years, and it has been well received by both faculty and students. Walter Savitch explains difficult programming concepts in a clear and concise manner and discusses all the important features of the C++ language.rdquo; Carol Roberts, University of Maine ldquo;Writing a book is an art if, and only if, it can create an artist. Savitchrsquo;s book does just this. It contains fundamental materials presented in a pleasant way in which not only the flow consistency, but also the example consistency, is preserved.rdquo; Coskun Bayrak, University of Arkansas at Little Rock ldquo;The progression from programming basics to object-oriented concepts is logical and effectively leads beginning C++ students to an understanding of classes and more advanced topics.rdquo; Stephen Weissman, Burlington County College This Sixth Edition features: bull; Savitchrsquo;s unparalleled clear and concise writing style bull; Extensive use of examples, exercises, and projects to promote good programming practice bull; Earlier coverage of loops and arrays bull; Enhanced discussion of debugging bull; All code updated to be ANSI/ISO compliant bull; Two new programming projects per chapter MyCodeMate is a web-based, textbook-specific homework tool and programming resource for an introduction to programming course. It provides a wide rangeof tools that students can use to help them learn programming concepts, prepare for tests, and earn better grades in the introductory programming course. Students can work on programming problems from this text or homework problems created by their professors, and receive guided hints with page references and English explanations of compiler errors. Instructors can assign textbook-specific or self-created homework problems, preset style attributes, view studentsrsquo; code and class compiler error logs, and track homework completion. A complimentary subscription is offered when an access code is ordered packaged with a new copy of this text. Subscriptions may also be purchased online. For more information visit
what's this?
Rush Rewards U
Members Receive:
You have reached 400 XP and carrot coins. That is the daily max!
Study Briefs

Limited time offer: Get the first one free! (?)

All the information you need in one place! Each Study Brief is a summary of one specific subject; facts, figures, and explanations to help you learn faster.

Add to cart
Study Briefs
SQL Online content $4.95 $1.99
Add to cart
Study Briefs
MS Excel® 2010 Online content $4.95 $1.99
Add to cart
Study Briefs
MS Word® 2010 Online content $4.95 $1.99
Add to cart
Study Briefs
MS PowerPoint® 2010 Online content $4.95 $1.99
Customers also bought

Book details

List price: $103.00
Edition: 6th
Copyright year: 2007
Publisher: Addison-Wesley Longman, Incorporated
Binding: Mixed Media
Pages: 1056
Size: 7.75" wide x 9.50" long x 1.75" tall
Weight: 3.344
Language: English

Introduction to Computers and C++ Programming
Computer Systems
High-Level Languages
History Note
Programming and Problem-Solving
Program Design
Object-Oriented Programming
The Software Life Cycle
Introduction to C++
Origins of the C++ Language
A Sample C++ Program
Pitfall: Using the Wrong Slash in \n
Programming Tip: Input and Output Syntax
Layout of a Simple C++ Program
Pitfall: Putting a Space before the include File Name
Compiling and Running a C++ Program
Programming Tip: Getting Your Program to Run
Testing and Debugging
Kinds of Program Errors
Pitfall: Assuming Your Program Is Correct
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
C++ Basics
Variables and Assignments
Names: Identifiers
Variable Declarations
Assignment Statements
Pitfall: Uninitialized Variables
Programming Tip: Use Meaningful Names
Input and Output
Output Using cout
Include Directives and Namespaces
Escape Sequences
Programming Tip: End Each Program with a \n or endl
Formatting for Numbers with a Decimal Point
Input Using cin
Designing Input and Output
Programming Tip: Line Breaks in I/O
Data Types and Expressions
The Types int and double
Other Number Types
The Type char
The Type bool
Introduction to the Class string
Type Compatibilities
Arithmetic Operators and Expressions
Pitfall: Whole Numbers in Division
More Assignment Statements
Simple Flow of Control
A Simple Branching Mechanism
Pitfall: Strings of Inequalities
Pitfall: Using = in place of ==
Compound Statements
Simple Loop Mechanisms
Increment and Decrement Operators
Programming Example: Charge Card Balance
Pitfall: Infinite Loops
Program Style
Naming Constants
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
More Flow of Control
Using Boolean Expressions
Evaluating Boolean Expressions
Pitfall: Boolean Expressions Convert to int Values
Enumeration Types (Optional)
Multiway Branches
Nested Statements
Programming Tip: Use Braces in Nested Statements
Multiway if-else Statements
Programming Example: State Income Tax
The switch Statement
Pitfall: Forgetting a break in a switch Statement
Using switch Statements for Menus
Pitfall: Inadvertent Local Variables
More About C++ Loop Statements
The while Statements Reviewed
Increment and Decrement Operators Revisited
The for Statement
Pitfall: Extra Semicolon in a for Statement
What Kind of Loop to Use
Pitfall: Uninitialized Variables and Infinite Loops
The break Statement
Pitfall: The break Statement in Nested Loops
Designing Loops
Loops for Sums and Products
Ending a Loop
Nested Loops
Debugging Loops
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Procedural Abstraction and Functions That Return a Value
Top-Down Design
Predefined Functions
Using Predefined Functions
Type Casting
Older Form of Type Casting
Pitfall: Integer Division Drops the Fractional Part
Programmer-Defined Functions
Function Definitions
Functions That Return a Boolean Value
Alternate Form for Function Declarations
Pitfall: Arguments in the Wrong Order
Function Definition-Syntax Summary
More About Placement of Function Definitions
Programming Tip: Use Function Calls in Branching Statements
Procedural Abstraction
The Black Box Analogy
Programming Tip: Choosing Formal Parameter Names
Programming Tip: Nested Loops
Case Study: Buying Pizza
Programming Tip: Use Pseudocode
Local Variables
The Small Program Analogy
Programming Example: Experimental Pea Patch
Global Constants and Global Variables
Call-by-Value Formal Parameters Are Local Variables
Namespaces Revisited
Programming Example: The Factorial Function
Overloading Function Names
Introduction to Overloading
Programming Example: Revised Pizza-Buying Program
Automatic Type Conversion
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Functions for All Subtasks
Void Functions
Definitions of void Functions
Programming Example: Converting Temperatures
Return Statements in void Functions
Call-by-Reference Parameters
A First View of Call-by-Reference
Call-by-Reference in Detail
Programming Example: The swap_values Function
Mixed Parameter Lists
Programming Tip: What Kind of Parameter to Use
Pitfall: Inadvertent Local Variables
Using Procedural Abstraction
Functions Calling Functions
Preconditions and Postconditions
Case Study: Supermarket Pricing
Testing and Debugging Functions
Stubs and Drivers
General Debugging Techniques
Keep an Open Mind
Check Common Errors
Localize the Error
The assert macro
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
I/O Streams as an Introduction to Objects and Classes
Streams and Basic File I/O
Why Use Files for I/O?
File I/O
Introduction to Classes and Objects
Programming Tip: Check Whether a File Was Opened Successfully
Techniques for File I/O
Appending to a File (Optional)
File Names as Input (Optional)
Tools for Stream I/O
Formatting Output with Stream Functions
Streams as Arguments to Functions
Programming Tip: Checking for the End of a File
A Note on Namespaces
Programming Example: Cleaning Up a File Format
Character I/O
The Member Functions get and put
The putback Member Function (Optional)
Programming Example: Checking Input
Pitfall: Unexpected '\n' in Input
The eof Member Function
Programming Example: Editing a Text File
Predefined Character Functions
Pitfall: toupper and tolower Return Values
Inheritance Among Stream Classes
Programming Example: Another new_line Function
Default Arguments for Functions (Optional)
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Introduction to Arrays
Declaring and Referencing Arrays
Programming Tip: Use for Loops with Arrays
Pitfall: Array Indexes Always Start with Zero
Programming Tip: Use a Defined Constant for the Size of an Array
Arrays in Memory
Pitfall: Array Index Out of Range
Initializing Arrays
Arrays in Functions
Indexed Variables as Function Arguments
Entire Arrays as Function Arguments
The const Parameter Modifier
Pitfall: Inconsistent Use of const Parameters
Functions That Return an Array
Case Study: Production Graph
Programming with Arrays
Partially Filled Arrays
Programming Tip: Do Not Skimp on Formal Parameters
Programming Example: Searching an Array
Programming Example: Sorting an Array
Multidimensional Arrays
Multidimensional Array Basics
Multidimensional Array Parameters
Programming Example: Two-Dimensional Grading Program
Pitfall: Using Commas Between Array Indexes
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Strings and Vectors
An Array Type for Strings
C-String Values and C-String Variables
Pitfall: Using = and == with C Strings
Other Functions in <cstring>
C-String Input and Output
C-String-to-Number Conversions and Robust Input
The Standard string Class
Introduction to the Standard Class string
I/O with the Class string
Programming Tip: More Versions of getline
Pitfall: Mixing cin [double greater-than sign] variable; and getline
String Processing with the Class string
Programming Example: Palindrome Testing
Converting between string Objects and C Strings
Vector Basics
Pitfall: Using Square Brackets Beyond the Vector Size
Programming Tip: Vector Assignment Is Well Behaved
Efficiency Issues
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Pointers and Dynamic Arrays
Pointer Variables
Basic Memory Management
Pitfall: Dangling Pointers
Static Variables and Automatic Variables
Programming Tip: Define Pointer Types
Dynamic Arrays
Array Variables and Pointer Variables
Creating and Using Dynamic Arrays
Pointer Arithmetic (Optional)
Multidimensional Dynamic Arrays (Optional)
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Defining Classes
Structures for Diverse Data
Pitfall: Forgetting a Semicolon in a Structure Definition
Structures as Function Arguments
Programming Tip: Use Hierarchical Structures
Initializing Structures
Defining Classes and Member Functions
Public and Private Members
Programming Tip: Make All Member Variables Private
Programming Tip: Define Accessor and Mutator Functions
Programming Tip: Use the Assignment Operator with Objects
Programming Example: BankAccount Class-Version 1
Summary of Some Properties of Classes
Constructors for Initialization
Programming Tip: Always Include a Default Constructor
Pitfall: Constructors with No Arguments
Abstract Data Types
Classes to Produce Abstract Data Types
Programming Example: Alternative Implementation of a Class
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Friends, Overloaded Operators, and Arrays in Classes
Friend Functions
Programming Example: An Equality Function
Friend Functions
Programming Tip: Define Both Accessor Functions and Friend Functions
Programming Tip: Use Both Member and Nonmember Functions
Programming Example: Money Class (Version 1)
Implementation of digit_to_int (Optional)
Pitfall: Leading Zeros in Number Constants
The const Parameter Modifier
Pitfall: Inconsistent Use of const
Overloading Operators
Overloading Operators
Constructors for Automatic Type Conversion
Overloading Unary Operators
Overloading [double greater-than sign] and [double less-than sign]
Arrays and Classes
Arrays of Classes
Arrays as Class Members
Programming Example: A Class for a Partially Filled Array
Classes and Dynamic Arrays
Programming Example: A String Variable Class
Pitfall: Pointers as Call-by-Value Parameters
Copy Constructors
Overloading the Assignment Operator
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Separate Compilation and Namespaces
Separate Compilation
ADTs Reviewed
Case Study: DigitalTime-A Class Compiled Separately
Using #ifndef
Programming Tip: Defining Other Libraries
Namespaces and using Directives
Creating a Namespace
Qualifying Names
A Subtle Point About Namespaces (Optional)
Unnamed Namespaces
Programming Tip: Choosing a Name for a Namespace
Pitfall: Confusing the Global Namespace and the Unnamed Namespace
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Pointers and Linked Lists
Nodes and Linked Lists
Linked Lists
Inserting a Node at the Head of a List
Pitfall: Losing Nodes
Searching a Linked List
Pointers as Iterators
Inserting and Removing Nodes Inside a List
Pitfall: Using the Assignment Operator with Dynamic Data Structures
Variations on Linked Lists
Linked Lists of Classes
Stacks and Queues
Programming Example: A Stack Class
Programming Example: A Queue Class
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Recursive Functions for Tasks
Case Study: Vertical Numbers
A Closer Look at Recursion
Pitfall: Infinite Recursion
Stacks for Recursion
Pitfall: Stack Overflow
Recursion Versus Iteration
Recursive Functions for Values
General Form for a Recursive Function That Returns a Value
Programming Example: Another Powers Function
Thinking Recursively
Recursive Design Techniques
Case Study: Binary Search-An Example of Recursive Thinking
Programming Example: A Recursive Member Function
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Inheritance Basics
Derived Classes
Constructors in Derived Classes
Pitfall: Use of Private Member Variables from the Base Class
Pitfall: Private Member Functions Are Effectively Not Inherited
The protected Qualifier
Redefinition of Member Functions
Redefining Versus Overloading
Access to a Redefined Base Function
Inheritance Details
Functions That Are Not Inherited
Assignment Operators and Copy Constructors in Derived Classes
Destructors in Derived Classes
Late Binding
Virtual Functions in C++
Virtual Functions and Extended Type Compatibility
Pitfall: The Slicing Problem
Pitfall: Not Using Virtual Member Functions
Pitfall: Attempting to Compile Class Definitions Without Definitions for Every Virtual Member Function
Programming Tip: Make Destructors Virtual
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Exception Handling
Exception-Handling Basics
A Toy Example of Exception Handling
Defining Your Own Exception Classes
Multiple Throws and Catches
Pitfall: Catch the More Specific Exception First
Programming Tip: Exception Classes Can Be Trivial
Throwing an Exception in a Function
Exception Specification
Pitfall: Exception Specification in Derived Classes
Programming Techniques for Exception Handling
When to Throw an Exception
Pitfall: Uncaught Exceptions
Pitfall: Nested try-catch Blocks
Pitfall: Overuse of Exceptions
Exception Class Hierarchies
Testing for Available Memory
Rethrowing an Exception
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Templates for Algorithm Abstraction
Templates for Functions
Pitfall: Compiler Complications
Programming Example: A Generic Sorting Function
Programming Tip: How to Define Templates
Pitfall: Using a Template with an Inappropriate Type
Templates for Data Abstraction
Syntax for Class Templates
Programming Example: An Array Class
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
Standard Template Library
Using Declarations
Iterator Basics
Kinds of Iterators
Constant and Mutable Iterators
Reverse Iterators
Pitfall: Compiler Problems
Other Kinds of Iterators
Sequential Containers
Pitfall: Iterators and Removing Elements
Programming Tip: Type Definitions in Containers
Container Adapters stack and queue
Associative Containers set and map
Generic Algorithms
Running Times and Big-O Notation
Container Access Running Times
Nonmodifying Sequence Algorithms
Container Modifying Algorithms
Set Algorithms
Sorting Algorithms
Chapter Summary
Answers to Self-Test Exercises
Programming Projects
C++ Keywords
Precedence of Operators
The ASCII Character Set
Some Library Functions
Inline Functions
Overloading the Array Index Square Brackets
The this Pointer
Overloading Operators as Member Operators
Free shipping on orders over $35*

*A minimum purchase of $35 is required. Shipping is provided via FedEx SmartPost® and FedEx Express Saver®. Average delivery time is 1 – 5 business days, but is not guaranteed in that timeframe. Also allow 1 - 2 days for processing. Free shipping is eligible only in the continental United States and excludes Hawaii, Alaska and Puerto Rico. FedEx service marks used by permission."Marketplace" orders are not eligible for free or discounted shipping.

Learn more about the TextbookRush Marketplace.