classes assignment help c++ - 2
TRANSCRIPT
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 1/20
10Classes:
A Deeper Look,Part 2
O B J E C T I V E SIn this chapter you will learn:
■ To specify const (constant) objects and const member functions.
■ To create objects composed of other objects.
■ To use friend functions and friend classes.
■ To use the this pointer.
■
To create and destroy objects dynamically with operatorsnew and delete, respectively.
■ To use static data members and member functions.
■ The concept of a container class.
■ The notion of iterator classes that walk through theelements of container classes.
■ To use proxy classes to hide implementation details froma class’s clients.
But what, to serve our private ends,Forbids the cheating of our
friends?
—Charles Churchill
Instead of this absurddivision into sexes they oughtto class people as static anddynamic.
—Evelyn Waugh
Have no friends not equal to yourself.
—Confucius
2005 Pearson Education, Inc., Upper Saddle River, NJ. All rights reserved. This material is protected under all copyright laws as they currentlyNo portion of this material may be reproduced, in any form or by any means, without permission in writing from the publisher.
For the exclusive use of adopters of the book C++ How to Program, 5th Edition,
by Deitel and Deitel. ISBN 0-13-185757-6.
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 2/20
524 Chapter 10 Classes: A Deeper Look, Part 2
Self-Review Exercises
10.1 Fill in the blanks in each of the following:a) must be used to initialize constant members of a class. ANS : member initializers.b) A nonmember function must be declared as a(n) of a class to have access
to that class’s private data members. ANS : friend.c) The operator dynamically allocates memory for an object of a specified
type and returns a to that type. ANS : new, pointer.d) A constant object must be ; it cannot be modified after it is created. ANS : initialized.e) A(n) data member represents class-wide information. ANS : static.f) An object’s non-static member functions have access to a “self pointer” to the object
called the pointer.
ANS : this.g) The keyword specifies that an object or variable is not modifiable after it
is initialized. ANS : const.h) If a member initializer is not provided for a member object of a class, the object's
is called. ANS : default constructor.i) A member function should be declared static if it does not access class
members. ANS : non-static. j) Member objects are constructed their enclosing class object. ANS :
before.k) The operator reclaims memory previously allocated by new. ANS : delete.
10.2 Find the errors in the following class and explain how to correct them:
class Example {
public: Example( int y = 10 ) : data( y )
{
// empty body
} // end Example constructor
int getIncrementedData() const {
return data++;} // end function getIncrementedData
static int getCount() {
cout << "Data is " << data << endl;
return count; } // end function getCount
private: int data;
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 3/20
Exercises 525
static int count;}; // end class Example
ANS : Error: The class definition for Example has two errors. The first occurs in functiongetIncrementedData. The function is declared const, but it modifies the object.Correction: To correct the first error, remove the const keyword from the definitionof getIncrementedData.Error: The second error occurs in function getCount. This function is declaredstatic, so it is not allowed to access any non-static member of the class.Correction: To correct the second error, remove the output line from the getCount def-inition.
Exercises
10.3 Compare and contrast dynamic memory allocation and deallocation operators new, new [],delete and delete [].
ANS : Operator new creates an object and dynamically allocates space in memory for that
object. Operatordelete
destroys a dynamically allocated object and frees the spacethat was occupied by the object. Operators new [] and delete [] are used to allocateand deallocate arrays dynamically.
10.4 Explain the notion of friendship in C++. Explain the negative aspects of friendship as de-scribed in the text.
ANS : Functions that are declared as friends of a class have access to that class’s private
and protected members. Some people in the object-oriented programming commu-nity prefer not to use friend functions. Such people believe friendship corrupts in-formation hiding and weakens the value of the object-oriented design approach,because friend functions can directly access a class’s implementation details that aresupposed to be hidden.
10.5 Can a correct Time class definition include both of the following constructors? If not, ex-plain why not.
Time( int h = 0, int m = 0, int s = 0 );
Time();
ANS : No. There is ambiguity between the two constructors. When a call is made to the de-fault constructor, the compiler cannot determine which one to use because both con-structors can be called with no arguments.
10.6 What happens when a return type, even void, is specified for a constructor or destructor? ANS : A compilation error occurs. A programmer cannot specify a return type for a con-
structor or destructor.
10.7 Modify class Date in Fig. 10.10 to have the following capabilities:a) Output the date in multiple formats such as
DDD YYYY
MM/DD/YY
June 14, 1992
b) Use overloaded constructors to create Date objects initialized with dates of the formatsin part (a).
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 4/20
526 Chapter 10 Classes: A Deeper Look, Part 2
c) Create a Date constructor that reads the system date using the standard library functionsof the <ctime> header and sets the Date members. (See your compiler’s reference docu-mentation or www.cplusplus.com/ref/ctime/index.html for information on the func-tions in header <ctime>.)
In Chapter 11, we will be able to create operators for testing the equality of two dates and for com-
paring dates to determine whether one date is prior to, or after, another. ANS :
1 // Exercise 10.7 Solution: Date.h
2 // Date class definition; Member functions defined in Date.cpp
3 #ifndef DATE_H
4 #define DATE_H
5
6 #include <string>
7 using std::string;
8
9 class Date
10 {
11 public:
12 Date(); // default constructor uses <ctime> functions to set date
13 Date( int, int ); // constructor using ddd yyyy format
14 Date( int, int, int ); // constructor using dd/mm/yy format
15 Date( string, int, int ); // constructor using Month dd, yyyy format
16 void setDay( int ); // set the day
17 void setMonth( int ); // set the month
18 void print() const; // print date in month/day/year format
19 void printDDDYYYY() const; // print date in ddd yyyy format
20 void printMMDDYY() const; // print date in mm/dd/yy format
21 void printMonthDDYYYY() const; // print date in Month dd, yyyy format
22 ~Date(); // provided to confirm destruction order23 private:
24 int month; // 1-12 (January-December)
25 int day; // 1-31 based on month
26 int year; // any year
27
28 // utility functions
29 int checkDay( int ) const; // check if day is proper for month and year
30 int daysInMonth( int ) const; // returns number of days in given month
31 bool isLeapYear() const; // indicates whether date is in a leap year
32 int convertDDToDDD() const; // get 3-digit day based on month and day
33 void setMMDDFromDDD( int ); // set month and day based on 3-digit day
34 string convertMMToMonth( int ) const; // convert mm to month name
35 void setMMFromMonth( string ); // convert month name to mm36 int convertYYYYToYY() const; // get 2-digit year based on 4-digit year
37 void setYYYYFromYY( int ); // set year based on 2-digit year
38 }; // end class Date
39
40 #endif
1 // Exercise 10.7 Solution: Date.cpp
2 // Member-function definitions for class Date.
3 #include <iostream>
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 5/20
Exercises 527
4 using std::cout;
5 using std::endl;
6
7 #include <iomanip>
8 using std::setw;
9 using std::setfill;
10
11 #include <ctime>
12 using std::time;
13 using std::localtime;
14 using std::tm;
15 using std::time_t;
16
17 #include "Date.h" // include Date class definition
18
19 // default constructor that sets date using <ctime> functions
20 Date::Date()
21 {
22 // pointer of type struct tm which holds calendar time components23 struct tm *ptr;
24
25 time_t t = time( 0 ); // determine current calendar time
26
27 // convert current calendar time pointed to by t into
28 // broken down time and assign it to ptr
29 ptr = localtime( &t );30
31 day = ptr->tm_mday; // broken down day of month
32 month = 1 + ptr->tm_mon; // broken down month since January
33 year = ptr->tm_year + 1900; // broken down year since 1900
34 } // end Date constructor
35
36 // constructor that takes date in ddd yyyy format
37 Date::Date( int ddd, int yyyy )
38 {
39 year = yyyy; // could validate
40 setMMDDFromDDD( ddd ); // set month and day based on ddd
41 } // end Date constructor
42
43 // constructor that takes date in mm/dd/yy format
44 Date::Date( int mm, int dd, int yy )
45 {
46 setYYYYFromYY( yy ); // set 4-digit year based on yy
47 setMonth( mm ); // validate and set the month48 setDay( dd ); // validate and set the day
49 } // end Date constructor
50
51 // constructor that takes date in Month dd, yyyy format
52 Date::Date( string monthName, int dd, int yyyy )
53 {
54 setMMFromMonth( monthName ); // set month based on month name
55 setDay( dd ); // validate and set the day
56 year = yyyy; // could validate
57 } // end Date constructor
58
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 6/20
528 Chapter 10 Classes: A Deeper Look, Part 2
59 // validate and store the day
60 void Date::setDay( int d )
61 {
62 day = checkDay( d ); // validate the day
63 } // end function setDay
64
65 // validate and store the month66 void Date::setMonth( int m )
67 {
68 if ( m > 0 && m <= 12 ) // validate the month
69 month = m;
70 else
71 {72 month = 1; // invalid month set to 1
73 cout << "Invalid month (" << m << ") set to 1.\n";
74 } // end else
75 } // end function setMonth
76
77 // print Date object in form: month/day/year78 void Date::print() const
79 {
80 cout << month << '/' << day << '/' << year << endl;
81 } // end function print
82
83 // print Date object in form: ddd yyyy
84 void Date::printDDDYYYY() const85 {
86 cout << convertDDToDDD() << ' ' << year << endl;
87 } // end function printDDDYYYY
88
89 // print Date object in form: mm/dd/yy
90 void Date::printMMDDYY() const91 {
92 cout << setw( 2 ) << setfill( '0' ) << month << '/'
93 << setw( 2 ) << setfill( '0' ) << day << '/'
94 << setw( 2 ) << setfill( '0' ) << convertYYYYToYY() << endl;
95 } // end function printMMDDYY
96
97 // print Date object in form: Month dd, yyyy
98 void Date::printMonthDDYYYY() const
99 {
100 cout << convertMMToMonth( month ) << ' ' << day << ", " << year
101 << endl;
102} // end function printMonthDDYYYY103
104 // output Date object to show when its destructor is called
105 Date::~Date()
106 {
107 cout << "Date object destructor for date ";
108 print();
109 cout << endl;
110 } // end ~Date destructor
111
112 // utility function to confirm proper day value based on
113 // month and year; handles leap years, too
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 7/20
Exercises 529
114 int Date::checkDay( int testDay ) const
115 {
116 // determine whether testDay is valid for specified month
117 if ( testDay > 0 && testDay <= daysInMonth( month ) )
118 return testDay;
119
120 // February 29 check for leap year121 if ( month == 2 && testDay == 29 && isLeapYear() )
122 return testDay;
123
124 cout << "Invalid day (" << testDay << ") set to 1.\n";
125 return 1; // leave object in consistent state if bad value
126 } // end function checkDay127
128 // return the number of days in a month
129 int Date::daysInMonth( int m ) const
130 {
131 if ( isLeapYear() && m == 2 )
132 return 29;133
134 static const int daysPerMonth[ 13 ] =
135 { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
136
137 return daysPerMonth[ m ];
138 } // end function daysInMonth
139
140 // test for a leap year
141 bool Date::isLeapYear() const
142 {
143 if ( year % 400 == 0 || ( year % 4 == 0 && year % 100 != 0 ) )
144 return true;
145 else146 return false;
147 } // end function isLeapYear
148
149 // calculate 3-digit day based on Date object's current month and day
150 int Date::convertDDToDDD() const
151 {
152 int ddd = 0;
153
154 // for each month that has passed, add days to ddd
155 for ( int i = 1; i < month; i++ )
156 ddd += daysInMonth( i );
157 158 // add days from current month
159 ddd += day;
160
161 return ddd;
162 } // end function convertDDToDDD
163
164 // set month and day based on 3-digit day
165 void Date::setMMDDFromDDD( int ddd )
166 {
167 int dayTotal = 0;
168 int m;
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 8/20
530 Chapter 10 Classes: A Deeper Look, Part 2
169
170 for ( m = 1; m <= 12 && ( dayTotal + daysInMonth( m ) ) < ddd; m++ )
171 dayTotal += daysInMonth( m );
172
173 setMonth( m );
174 setDay( ddd - dayTotal );
175 } // end function setMMDDFromDDD176
177 // utility function to convert month number to month name
178 string Date::convertMMToMonth( int mm ) const
179 {
180 static const string months[] =
181 { "", "January", "February", "March", "April", "May", "June",182 "July", "August", "September", "October", "November", "December" };
183
184 return months[ mm ];
185 } // end function convertMMToMonth
186
187 // set month number based on month name188 void Date::setMMFromMonth( string m )
189 {
190 bool matchFound = false;
191
192 // loop for each month, checking for a match
193 for ( int i = 1; i <= 12 && !matchFound; i++ )
194 {195 string tempMonth = convertMMToMonth( i );
196
197 if ( tempMonth == m )
198 {
199 setMonth( i );
200 matchFound = true;201 } // end if
202 } // end for
203
204 if ( !matchFound )
205 {
206 cout << "Invalid month name (" << month << "). month set to 1.\n";
207 setMonth( 1 ); // leave object in consistent state if bad value
208 } // end if
209 } // end function setMMFromMonth
210
211 // utility function to convert 4-digit year to 2-digit year
212int Date::convertYYYYToYY() const213 {
214 // if year is in 2000s, subtract 2000
215 // else, assume year is in the 1900s and subtract 1900
216 return ( year >= 2000 ? year - 2000 : year - 1900 );
217 } // end function convertYYYYtoYY
218
219 // utility function to convert 2-digit year to 4-digit year
220 void Date::setYYYYFromYY( int yy )
221 {
222 // if yy is less than 7, assume its in the 2000s
223 // if yy is greater than or equal to 7, assume it's in the 1900s
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 9/20
Exercises 531
224 year = ( yy < 7 ? yy + 2000 : yy + 1900 );
225 } // end function setYYYYFromYY
1 // Exercise 10.7 Solution: ex10_07.cpp
2 // Driver program for class Date.3 #include <iostream>
4 using std::cout;
5 using std::endl;
6
7 #include "Date.h" // include Date class definition
8
9 int main()
10 {
11 Date date1( 256, 1999 ); // initialize using ddd yyyy format12 Date date2( 3, 25, 04 ); // initialize using mm/dd/yy format
13 Date date3( "September", 1, 2000 ); // "month" dd, yyyy format
14 Date date4; // initialize to current date with default constructor
1516 // print Date objects in default format
17 date1.print();
18 date2.print();
19 date3.print();
20 date4.print();
21 cout << '\n';
22
23 // print Date objects in 'ddd yyyy' format
24 date1.printDDDYYYY();
25 date2.printDDDYYYY();
26 date3.printDDDYYYY();
27 date4.printDDDYYYY();28 cout << '\n';
29
30 // print Date objects in 'mm/dd/yy' format
31 date1.printMMDDYY();
32 date2.printMMDDYY();
33 date3.printMMDDYY();
34 date4.printMMDDYY();
35 cout << '\n';
36
37 // print Date objects in '"month" d, yyyy' format
38 date1.printMonthDDYYYY();
39 date2.printMonthDDYYYY();
40 date3.printMonthDDYYYY();41 date4.printMonthDDYYYY();
42 cout << endl;
43
44 return 0;
45 } // end main
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 10/20
532 Chapter 10 Classes: A Deeper Look, Part 2
10.8 Create a SavingsAccount class. Use a static data member annualInterestRate to store theannual interest rate for each of the savers. Each member of the class contains a private data member
savingsBalance indicating the amount the saver currently has on deposit. Provide member func-tion calculateMonthlyInterest that calculates the monthly interest by multiplying the balance by annualInterestRate divided by 12; this interest should be added to savingsBalance. Provide a static member function modifyInterestRate that sets the static annualInterestRate to a new value. Write a driver program to test class SavingsAccount. Instantiate two different objects of classSavingsAccount, saver1 and saver2, with balances of $2000.00 and $3000.00, respectively. Set theannualInterestRate to 3 percent. Then calculate the monthly interest and print the new balancesfor each of the savers. Then set the annualInterestRate to 4 percent, calculate the next month’sinterest and print the new balances for each of the savers.
ANS :
9/13/19993/25/20049/1/200012/14/2004
256 199985 2004245 2000349 2004
09/13/9903/25/0409/01/0012/14/04
September 13, 1999March 25, 2004September 1, 2000
December 14, 2004
Date object destructor for date 12/14/2004
Date object destructor for date 9/1/2000
Date object destructor for date 3/25/2004
Date object destructor for date 9/13/1999
1 // SavingsAccount.h2 // Header file for class SavingsAccount.
3 #ifndef SAVINGS_ACCOUNT_H
4 #define SAVINGS_ACCOUNT_H
5
6 class SavingsAccount
7 {
8 public:
9 // constructor sets balance to value greater than or equal to zero
10 SavingsAccount( double b )
11 {
12 savingsBalance = ( b >= 0.0 ? b : 0.0 );
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 11/20
Exercises 533
13 } // end SavingsAccount constructor
14
15 void calculateMonthlyInterest(); // calculate interest; add to balance
16 static void modifyInterestRate( double );
17 void printBalance() const;
18 private:
19 double savingsBalance; // the account balance20 static double annualInterestRate; // the interest rate of all accounts
21 }; // end class SavingsAccount
22
23 #endif
1 // Exercise 10.8 Solution: SavingsAccount.cpp
2 // Member-function defintions for class SavingsAccount.3 #include <iostream>
4 using std::cout;
5 using std::fixed;
67 #include <iomanip>
8 using std::setprecision;
9
10 #include "SavingsAccount.h" // SavingsAccount class definition
11
12 // initialize static data member
13 double SavingsAccount::annualInterestRate = 0.0;
14
15 // calculate monthly interest for this savings account
16 void SavingsAccount::calculateMonthlyInterest()
17 {
18 savingsBalance += savingsBalance * ( annualInterestRate / 12.0 );19 } // end function calculateMonthlyInterest
20
21 // function for modifying static member variable annualInterestRate
22 void SavingsAccount::modifyInterestRate( double i )
23 {
24 annualInterestRate = ( i >= 0.0 && i <= 1.0 ) ? i : 0.03;
25 } // end function modifyInterestRate
26
27 // prints balance of the savings account
28 void SavingsAccount::printBalance() const
29 {
30 cout << fixed << '$' << setprecision( 2 ) << savingsBalance;
31 } // end function printBalance
1 // Exercise 10.8 Solution: ex10_08.cpp
2 // Driver program for class SavingsAccount.
3 #include <iostream>
4 using std::cout;
5 using std::endl;
6
7 #include <iomanip>
8 using std::setw;
9
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 12/20
534 Chapter 10 Classes: A Deeper Look, Part 2
10.9 Create class IntegerSet for which each object can hold integers in the range 0 through 100. A set is represented internally as an array of ones and zeros. Array element a[ i ] is 1 if integer i isin the set. Array element a[ j ] is 0 if integer j is not in the set. The default constructor initializesa set to the so-called “empty set,” i.e., a set whose array representation contains all zeros.
Provide member functions for the common set operations. For example, provide a unionOfSets
member function that creates a third set that is the set-theoretic union of two existing sets (i.e., anelement of the third set’s array is set to 1 if that element is 1 in either or both of the existing sets, andan element of the third set’s array is set to 0 if that element is 0 in each of the existing sets).
10 #include "SavingsAccount.h" // SavingsAccount class definition
11
12 int main()
13 {
14 SavingsAccount saver1( 2000.0 );
15 SavingsAccount saver2( 3000.0 );
16
17 SavingsAccount::modifyInterestRate( .03 ); // change interest rate
18
19 cout << "Initial balances:\nSaver 1: ";
20 saver1.printBalance();
21 cout << "\tSaver 2: ";
22 saver2.printBalance();23
24 saver1.calculateMonthlyInterest();
25 saver2.calculateMonthlyInterest();
26
27 cout << "\n\nBalances after 1 month's interest applied at .03:\n"
28 << "Saver 1: ";29 saver1.printBalance();
30 cout << "\tSaver 2: ";
31 saver2.printBalance();
32
33 SavingsAccount::modifyInterestRate( .04 ); // change interest rate
34 saver1.calculateMonthlyInterest();
35 saver2.calculateMonthlyInterest();36
37 cout << "\n\nBalances after 1 month's interest applied at .04:\n"
38 << "Saver 1: ";
39 saver1.printBalance();
40 cout << "\tSaver 2: ";
41 saver2.printBalance();42 cout << endl;
43 return 0;
44 } // end main
Initial balances:Saver 1: $2000.00 Saver 2: $3000.00
Balances after 1 month's interest applied at .03:Saver 1: $2005.00 Saver 2: $3007.50
Balances after 1 month's interest applied at .04:
Saver 1: $2011.68 Saver 2: $3017.53
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 13/20
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 14/20
536 Chapter 10 Classes: A Deeper Look, Part 2
1 // Exercise 10.9 Solution: IntegerSet.cpp
2 // Member-function definitions for class IntegerSet.
3 #include <iostream>
4 using std::cout;
5 using std::cin;
6 using std::cerr;7
8 #include <iomanip>
9 using std::setw;
10
11 #include "IntegerSet.h" // IntegerSet class definition
12
13 // constructor creates a set from array of integers
14 IntegerSet::IntegerSet( int array[], int size)
15 {
16 emptySet();
17
18 for ( int i = 0; i < size; i++ )
19 insertElement( array[ i ] );
20 } // end IntegerSet constructor
21
22 // initializes a set to the empty set
23 void IntegerSet::emptySet()24 {
25 for ( int y = 0; y < 101; y++ )
26 set[ y ] = 0;
27 } // end function emptySet
28
29 // input a set from the user
30 void IntegerSet::inputSet()
31 {32 int number;
33
34 do
35 {
36 cout << "Enter an element (-1 to end): ";37 cin >> number;
38
39 if ( validEntry( number ) )
40 set[ number ] = 1;
41 else if ( number != -1 )
42 cerr << "Invalid Element\n";
43 } while ( number != -1 ); // end do...while
44
45 cout << "Entry complete\n";
46 } // end function inputSet
47
48 // prints the set to the output stream
49 void IntegerSet::printSet() const
50 {
51 int x = 1;
52 bool empty = true; // assume set is empty
53
54 cout << '{';
55
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 15/20
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 16/20
538 Chapter 10 Classes: A Deeper Look, Part 2
111 set[ m ] = 0;
112 else
113 cerr << "Invalid delete attempted!\n";
114 } // end function deleteElement
115
116 // determines if two sets are equal
117 bool IntegerSet::isEqualTo( const IntegerSet &r ) const118 {
119 for ( int v = 0; v < 101; v++ )
120 if ( set[ v ] != r.set[ v ] )
121 return false; // sets are not-equal
122
123 return true; // sets are equal124 } // end function isEqualTo
1 // Exercise 10.9 Solution: ex10_09.cpp
2 // Driver program for class IntegerSet.
3 #include <iostream>4 using std::cout;
5 using std::endl;
6
7 #include "IntegerSet.h" // IntegerSet class definition
8
9 int main()
10 {
11 IntegerSet a;
12 IntegerSet b;
13 IntegerSet c;
14 IntegerSet d;
15
16 cout << "Enter set A:\n";
17 a.inputSet();
18 cout << "\nEnter set B:\n";
19 b.inputSet();
20 c = a.unionOfSets( b );
21 d = a.intersectionOfSets( b );
22 cout << "\nUnion of A and B is:\n";
23 c.printSet();
24 cout << "Intersection of A and B is:\n";
25 d.printSet();
26
27 if ( a.isEqualTo( b ) )
28 cout << "Set A is equal to set B\n";29 else
30 cout << "Set A is not equal to set B\n";
31
32 cout << "\nInserting 77 into set A...\n";
33 a.insertElement( 77 );
34 cout << "Set A is now:\n";
35 a.printSet();
36
37 cout << "\nDeleting 77 from set A...\n";
38 a.deleteElement( 77 );
39 cout << "Set A is now:\n";
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 17/20
Exercises 539
10.10 It would be perfectly reasonable for the Time class of Figs. 10.18–10.19 to represent thetime internally as the number of seconds since midnight rather than the three integer values hour,minute and second. Clients could use the same public methods and get the same results. Modify
40 a.printSet();
41
42 const int arraySize = 10;
43 int intArray[ arraySize ] = { 25, 67, 2, 9, 99, 105, 45, -5, 100, 1 };
44 IntegerSet e( intArray, arraySize );
45
46 cout << "\nSet e is:\n";47 e.printSet();
48
49 cout << endl;
50
51 return 0;
52 } // end main
Enter set A:Enter an element (-1 to end): 45
Enter an element (-1 to end): 76
Enter an element (-1 to end): 34
Enter an element (-1 to end): 6Enter an element (-1 to end): -1
Entry complete
Enter set B:Enter an element (-1 to end): 34
Enter an element (-1 to end): 8
Enter an element (-1 to end): 93
Enter an element (-1 to end): 45
Enter an element (-1 to end): -1
Entry complete
Union of A and B is:
{ 6 8 34 45 76 93 }Intersection of A and B is:{ 34 45 }Set A is not equal to set B
Inserting 77 into set A...Set A is now:{ 6 34 45 76 77 }
Deleting 77 from set A...Set A is now:{ 6 34 45 76 }Invalid insert attempted!Invalid insert attempted!
Set e is:{ 1 2 9 25 45 67 99 100 }
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 18/20
540 Chapter 10 Classes: A Deeper Look, Part 2
the Time class of Fig. 10.18 to implement the time as the number of seconds since midnight andshow that there is no visible change in functionality to the clients of the class. [Note: This exercisenicely demonstrates the virtues of implementation hiding.]
ANS :
1 // Exercise 10.10 Solution: Time.h
2 // Time class definition; Member functions defined in Time.cpp.
3 #ifndef TIME_H
4 #define TIME_H
5
6 class Time
7 {
8 public:
9 Time( int = 0, int = 0, int = 0 ); // default constructor
10
11 // set functions (the Time & return types enable cascading)
12 Time &setTime( int, int, int ); // set hour, minute, second
13 Time &setHour( int ); // set hour14 Time &setMinute( int ); // set minute
15 Time &setSecond( int ); // set second
16
17 // get functions (normally declared const)
18 int getHour() const; // return hour
19 int getMinute() const; // return minute
20 int getSecond() const; // return second
21
22 // print functions (normally declared const)
23 void printUniversal() const; // print universal time
24 void printStandard() const; // print standard time
25 private:
26 int totalSeconds; // number of seconds since midnight27 }; // end class Time
28
29 #endif
1 // Exercise 10.10 Solution: Time.cpp
2 // Member-function definitions for Time class.
3 #include <iostream>
4 using std::cout;
5
6 #include <iomanip>
7 using std::setfill;8 using std::setw;
9
10 #include "Time.h" // Time class definition
11
12 // constructor function to initialize private data;
13 // calls member function setTime to set variables;
14 // default values are 0 (see class definition)
15 Time::Time( int hr, int min, int sec )
16 {
17 setTime( hr, min, sec );
18 } // end Time constructor
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 19/20
Exercises 541
19
20 // set values of hour, minute, and second
21 Time &Time::setTime( int h, int m, int s ) // note Time & return
22 {
23 setHour( h );
24 setMinute( m );
25 setSecond( s );26 return *this; // enables cascading
27 } // end function setTime
28
29 // set hour value
30 Time &Time::setHour( int h ) // note Time & return
31 {32 int hours = ( h >= 0 && h < 24 ) ? h : 0;
33 totalSeconds = ( hours * 3600 ) + ( getMinute() * 60 ) + getSecond();
34 return *this; // enables cascading
35 } // end function setHour
36
37 // set minute value38 Time &Time::setMinute( int m ) // note Time & return
39 {
40 int minutes = ( m >= 0 && m < 60 ) ? m : 0;
41 totalSeconds = ( getHour() * 3600 ) + ( minutes * 60 ) + getSecond();
42 return *this; // enables cascading
43 } // end function setMinute
44
45 // set second value
46 Time &Time::setSecond( int s ) // note Time & return
47 {
48 int seconds = ( s >= 0 && s < 60 ) ? s : 0;
49 totalSeconds = ( getHour() * 3600 ) + ( getMinute() * 60 ) + seconds;
50 return *this; // enables cascading51 } // end function setSecond
52
53 // get hour value
54 int Time::getHour() const
55 {
56 return ( totalSeconds / 3600 );
57 } // end function getHour
58
59 // get minute value
60 int Time::getMinute() const
61 {
62 return ( ( totalSeconds % 3600 ) / 60 );63 } // end function getMinute
64
65 // get second value
66 int Time::getSecond() const
67 {
68 return ( ( totalSeconds % 3600 ) % 60 );
69 } // end function getSecond
70
71 // print Time in universal-time format (HH:MM:SS)
72 void Time::printUniversal() const
73 {
Copyright ® 1992-2005 by Deitel & Associates, Inc. All Rights Reserved.
8/12/2019 Classes Assignment Help C++ - 2
http://slidepdf.com/reader/full/classes-assignment-help-c-2 20/20
542 Chapter 10 Classes: A Deeper Look, Part 2
74 cout << setfill( '0' ) << setw( 2 ) << getHour() << ":"
75 << setw( 2 ) << getMinute() << ":" << setw( 2 ) << getSecond();
76 } // end function printUniversal
77
78 // print Time in standard-time format (HH:MM:SS AM or PM)
79 void Time::printStandard() const
80 {81 int hour = getHour();
82 cout << ( ( hour == 0 || hour == 12 ) ? 12 : hour % 12 )
83 << ":" << setfill( '0' ) << setw( 2 ) << getMinute()
84 << ":" << setw( 2 ) << getSecond() << ( hour < 12 ? " AM" : " PM" );
85 } // end function printStandard
1 // Exercise 10.10 Solution: ex10_10.cpp2 // Driver program for Time class.
3 #include <iostream>
4 using std::cout;
5 using std::endl;6
7 #include "Time.h" // Time class definition
8
9 int main()
10 {
11 Time t; // create Time object
12
13 // cascaded function calls
14 t.setHour( 18 ).setMinute( 30 ).setSecond( 22 );
15
16 // output time in universal and standard formats
17 cout << "Universal time: ";18 t.printUniversal();
19
20 cout << "\nStandard time: ";
21 t.printStandard();
22
23 cout << "\n\nNew standard time: ";
24
25 // cascaded function calls
26 t.setTime( 20, 20, 20 ).printStandard();
27 cout << endl;
28 return 0;
29 } // end main
Universal time: 18:30:22Standard time: 6:30:22 PM
New standard time: 8:20:20 PM