// Attached: HW_8s-2b
// ===========================================================
// File: HW_8s_2b_Combined.cpp
// ===========================================================
// Programmer: Elaine Torrez
// Class: CMPR 121
// ===========================================================
#include <iostream>
#include <string>
using namespace std;
// ===========================================================
// Date Class
// ===========================================================
class Date
{
private :
int month;
int day;
int year;
public :
Date( )
{
month = 0 ;
day = 0 ;
year = 0 ;
}
Date( int m, int d, int y)
{
month = m;
day = d;
year = y;
}
~Date( )
{
}
void setDate( int m, int d, int y)
{
month = m;
day = d;
year = y;
}
void displayDate( )
{
cout << month << "/" << day << "/" << year;
}
} ;
// ===========================================================
// FamousPeople Class
// ===========================================================
class FamousPeople
{
private :
string name;
string quote;
Date birthdate;
public :
FamousPeople( )
{
name = "" ;
quote = "" ;
}
~FamousPeople( )
{
}
void setName( string n)
{
name = n;
}
void setQuote( string q)
{
quote = q;
}
void setDate( int m, int d, int y)
{
birthdate.setDate ( m, d, y) ;
}
void displayDate( )
{
birthdate.displayDate ( ) ;
}
void displayPerson( )
{
cout << "Name: " << name << endl;
cout << "Birth Date: " ;
displayDate( ) ;
cout << endl;
cout << "Enter the quotation:" << endl;
cout << "\" " << quote << "\" " << endl << endl;
}
} ;
// ===========================================================
// Main Function
// ===========================================================
int main( )
{
FamousPeople person1, person2, person3;
string name, quote;
int month, day, year;
// First Person
cout << "Enter the first famous person: " ;
getline( cin , name) ;
person1.setName ( name) ;
cout << endl;
cout << "Enter the quotation:" << endl;
getline( cin , quote) ;
person1.setQuote ( quote) ;
cout << endl;
cout << "Enter the birthdate:" << endl;
cout << "Month: " ;
cin >> month;
cout << "Day: " ;
cin >> day;
cout << "Year: " ;
cin >> year;
person1.setDate ( month, day, year) ;
cin .ignore ( ) ;
cout << endl << "---- (Screen Clears) ----" << endl << endl;
// Second Person
cout << "Enter the second famous person: " ;
getline( cin , name) ;
person2.setName ( name) ;
cout << endl;
cout << "Enter the quotation:" << endl;
getline( cin , quote) ;
person2.setQuote ( quote) ;
cout << endl;
cout << "Enter the birthdate:" << endl;
cout << "Month: " ;
cin >> month;
cout << "Day: " ;
cin >> day;
cout << "Year: " ;
cin >> year;
person2.setDate ( month, day, year) ;
cin .ignore ( ) ;
cout << endl << "---- (Screen Clears) ----" << endl << endl;
// Third Person
cout << "Enter the third famous person: " ;
getline( cin , name) ;
person3.setName ( name) ;
cout << endl;
cout << "Enter the quotation:" << endl;
getline( cin , quote) ;
person3.setQuote ( quote) ;
cout << endl;
cout << "Enter the birthdate:" << endl;
cout << "Month: " ;
cin >> month;
cout << "Day: " ;
cin >> day;
cout << "Year: " ;
cin >> year;
person3.setDate ( month, day, year) ;
cout << endl << "---- (Screen Clears) ----" << endl;
cout << "Here are the famous people:" << endl << endl;
person1.displayPerson ( ) ;
person2.displayPerson ( ) ;
person3.displayPerson ( ) ;
system ( "pause" ) ;
return 0 ;
}
Ly8gQXR0YWNoZWQ6IEhXXzhzLTJiCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEZpbGU6IEhXXzhzXzJiX0NvbWJpbmVkLmNwcAovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBQcm9ncmFtbWVyOiBFbGFpbmUgVG9ycmV6Ci8vIENsYXNzOiBDTVBSIDEyMQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gRGF0ZSBDbGFzcwovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpjbGFzcyBEYXRlCnsKcHJpdmF0ZToKICAgIGludCBtb250aDsKICAgIGludCBkYXk7CiAgICBpbnQgeWVhcjsKCnB1YmxpYzoKICAgIERhdGUoKQogICAgewogICAgICAgIG1vbnRoID0gMDsKICAgICAgICBkYXkgPSAwOwogICAgICAgIHllYXIgPSAwOwogICAgfQoKICAgIERhdGUoaW50IG0sIGludCBkLCBpbnQgeSkKICAgIHsKICAgICAgICBtb250aCA9IG07CiAgICAgICAgZGF5ID0gZDsKICAgICAgICB5ZWFyID0geTsKICAgIH0KCiAgICB+RGF0ZSgpCiAgICB7CiAgICB9CgogICAgdm9pZCBzZXREYXRlKGludCBtLCBpbnQgZCwgaW50IHkpCiAgICB7CiAgICAgICAgbW9udGggPSBtOwogICAgICAgIGRheSA9IGQ7CiAgICAgICAgeWVhciA9IHk7CiAgICB9CgogICAgdm9pZCBkaXNwbGF5RGF0ZSgpCiAgICB7CiAgICAgICAgY291dCA8PCBtb250aCA8PCAiLyIgPDwgZGF5IDw8ICIvIiA8PCB5ZWFyOwogICAgfQp9OwoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gRmFtb3VzUGVvcGxlIENsYXNzCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmNsYXNzIEZhbW91c1Blb3BsZQp7CnByaXZhdGU6CiAgICBzdHJpbmcgbmFtZTsKICAgIHN0cmluZyBxdW90ZTsKICAgIERhdGUgYmlydGhkYXRlOwoKcHVibGljOgogICAgRmFtb3VzUGVvcGxlKCkKICAgIHsKICAgICAgICBuYW1lID0gIiI7CiAgICAgICAgcXVvdGUgPSAiIjsKICAgIH0KCiAgICB+RmFtb3VzUGVvcGxlKCkKICAgIHsKICAgIH0KCiAgICB2b2lkIHNldE5hbWUoc3RyaW5nIG4pCiAgICB7CiAgICAgICAgbmFtZSA9IG47CiAgICB9CgogICAgdm9pZCBzZXRRdW90ZShzdHJpbmcgcSkKICAgIHsKICAgICAgICBxdW90ZSA9IHE7CiAgICB9CgogICAgdm9pZCBzZXREYXRlKGludCBtLCBpbnQgZCwgaW50IHkpCiAgICB7CiAgICAgICAgYmlydGhkYXRlLnNldERhdGUobSwgZCwgeSk7CiAgICB9CgogICAgdm9pZCBkaXNwbGF5RGF0ZSgpCiAgICB7CiAgICAgICAgYmlydGhkYXRlLmRpc3BsYXlEYXRlKCk7CiAgICB9CgogICAgdm9pZCBkaXNwbGF5UGVyc29uKCkKICAgIHsKICAgICAgICBjb3V0IDw8ICJOYW1lOiAiIDw8IG5hbWUgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8ICJCaXJ0aCBEYXRlOiAiOwogICAgICAgIGRpc3BsYXlEYXRlKCk7CiAgICAgICAgY291dCA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIkVudGVyIHRoZSBxdW90YXRpb246IiA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIlwiIiA8PCBxdW90ZSA8PCAiXCIiIDw8IGVuZGwgPDwgZW5kbDsKICAgIH0KfTsKCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIE1haW4gRnVuY3Rpb24KLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KaW50IG1haW4oKQp7CiAgICBGYW1vdXNQZW9wbGUgcGVyc29uMSwgcGVyc29uMiwgcGVyc29uMzsKCiAgICBzdHJpbmcgbmFtZSwgcXVvdGU7CiAgICBpbnQgbW9udGgsIGRheSwgeWVhcjsKCiAgICAvLyBGaXJzdCBQZXJzb24KICAgIGNvdXQgPDwgIkVudGVyIHRoZSBmaXJzdCBmYW1vdXMgcGVyc29uOiAiOwogICAgZ2V0bGluZShjaW4sIG5hbWUpOwogICAgcGVyc29uMS5zZXROYW1lKG5hbWUpOwoKICAgIGNvdXQgPDwgZW5kbDsKICAgIGNvdXQgPDwgIkVudGVyIHRoZSBxdW90YXRpb246IiA8PCBlbmRsOwogICAgZ2V0bGluZShjaW4sIHF1b3RlKTsKICAgIHBlcnNvbjEuc2V0UXVvdGUocXVvdGUpOwoKICAgIGNvdXQgPDwgZW5kbDsKICAgIGNvdXQgPDwgIkVudGVyIHRoZSBiaXJ0aGRhdGU6IiA8PCBlbmRsOwogICAgY291dCA8PCAiTW9udGg6ICI7CiAgICBjaW4gPj4gbW9udGg7CiAgICBjb3V0IDw8ICJEYXk6ICI7CiAgICBjaW4gPj4gZGF5OwogICAgY291dCA8PCAiWWVhcjogIjsKICAgIGNpbiA+PiB5ZWFyOwogICAgcGVyc29uMS5zZXREYXRlKG1vbnRoLCBkYXksIHllYXIpOwoKICAgIGNpbi5pZ25vcmUoKTsKCiAgICBjb3V0IDw8IGVuZGwgPDwgIi0tLS0gIChTY3JlZW4gQ2xlYXJzKSAgLS0tLSIgPDwgZW5kbCA8PCBlbmRsOwoKICAgIC8vIFNlY29uZCBQZXJzb24KICAgIGNvdXQgPDwgIkVudGVyIHRoZSBzZWNvbmQgZmFtb3VzIHBlcnNvbjogIjsKICAgIGdldGxpbmUoY2luLCBuYW1lKTsKICAgIHBlcnNvbjIuc2V0TmFtZShuYW1lKTsKCiAgICBjb3V0IDw8IGVuZGw7CiAgICBjb3V0IDw8ICJFbnRlciB0aGUgcXVvdGF0aW9uOiIgPDwgZW5kbDsKICAgIGdldGxpbmUoY2luLCBxdW90ZSk7CiAgICBwZXJzb24yLnNldFF1b3RlKHF1b3RlKTsKCiAgICBjb3V0IDw8IGVuZGw7CiAgICBjb3V0IDw8ICJFbnRlciB0aGUgYmlydGhkYXRlOiIgPDwgZW5kbDsKICAgIGNvdXQgPDwgIk1vbnRoOiAiOwogICAgY2luID4+IG1vbnRoOwogICAgY291dCA8PCAiRGF5OiAiOwogICAgY2luID4+IGRheTsKICAgIGNvdXQgPDwgIlllYXI6ICI7CiAgICBjaW4gPj4geWVhcjsKICAgIHBlcnNvbjIuc2V0RGF0ZShtb250aCwgZGF5LCB5ZWFyKTsKCiAgICBjaW4uaWdub3JlKCk7CgogICAgY291dCA8PCBlbmRsIDw8ICItLS0tICAoU2NyZWVuIENsZWFycykgIC0tLS0iIDw8IGVuZGwgPDwgZW5kbDsKCiAgICAvLyBUaGlyZCBQZXJzb24KICAgIGNvdXQgPDwgIkVudGVyIHRoZSB0aGlyZCBmYW1vdXMgcGVyc29uOiAiOwogICAgZ2V0bGluZShjaW4sIG5hbWUpOwogICAgcGVyc29uMy5zZXROYW1lKG5hbWUpOwoKICAgIGNvdXQgPDwgZW5kbDsKICAgIGNvdXQgPDwgIkVudGVyIHRoZSBxdW90YXRpb246IiA8PCBlbmRsOwogICAgZ2V0bGluZShjaW4sIHF1b3RlKTsKICAgIHBlcnNvbjMuc2V0UXVvdGUocXVvdGUpOwoKICAgIGNvdXQgPDwgZW5kbDsKICAgIGNvdXQgPDwgIkVudGVyIHRoZSBiaXJ0aGRhdGU6IiA8PCBlbmRsOwogICAgY291dCA8PCAiTW9udGg6ICI7CiAgICBjaW4gPj4gbW9udGg7CiAgICBjb3V0IDw8ICJEYXk6ICI7CiAgICBjaW4gPj4gZGF5OwogICAgY291dCA8PCAiWWVhcjogIjsKICAgIGNpbiA+PiB5ZWFyOwogICAgcGVyc29uMy5zZXREYXRlKG1vbnRoLCBkYXksIHllYXIpOwoKICAgIGNvdXQgPDwgZW5kbCA8PCAiLS0tLSAgKFNjcmVlbiBDbGVhcnMpICAtLS0tIiA8PCBlbmRsOwogICAgY291dCA8PCAiSGVyZSBhcmUgdGhlIGZhbW91cyBwZW9wbGU6IiA8PCBlbmRsIDw8IGVuZGw7CgogICAgcGVyc29uMS5kaXNwbGF5UGVyc29uKCk7CiAgICBwZXJzb24yLmRpc3BsYXlQZXJzb24oKTsKICAgIHBlcnNvbjMuZGlzcGxheVBlcnNvbigpOwoKICAgIHN5c3RlbSgicGF1c2UiKTsKICAgIHJldHVybiAwOwp9