# Lecture 8 Examples  Open table as spreadsheet

Program

Demonstrates

cmlsasgn.cpp

complex.cpp

date.cpp

dateoptr.cpp

datoptr2.cpp

datereln.cpp

futrpas1.cpp

futrpas2.cpp

futrpas3.cpp

futrpas4.cpp

futrpast.cpp

Shows unary operator of pre and post being the same.

ratoreal.cpp

Shows how to define conversion operators.

rationals.h

This file contains the definition of the class rationals. The methods are contained in the file: rationals.cpp.

rationals.cpp

This file contains the methods for the class rationals contained in the header file: rational.h

stock1.cpp

stock2.cpp

stock3.cpp

stock.txt (sample data)

Demonstrates input and output by overloading << and >> where the >> operator is connected to an external text file.

stock4.cpp

Demonstrates input and output by overloading << and >> where both operators are used by cout and the << operator is connected to an external text file.

testrationals.cpp

This program tests the class rationals that are contained in the files: rationals.h and rationals.cpp ` // program_id               cmlxasgn.cpp // author                 don voils // date written            10/21/2006 // program description         This program illustrates the overloading //                    of the binary operations: +, -, *, and / //                    and the assignment operators: +=, -=, /=, //                    and *= to the Complex numbers of the form //                    a+bi. // #include<iostream> using namespace std; class Complex {   private:      double   real,               imaginary;   public:     Complex(double r=0, double i=0)     {         real = r;         imaginary=i;     }     double showReal()     {        return real;     }     double showImaginary()     {        return imaginary;     }     void operator +=(Complex a)     {       real += a.real;       imaginary += a.imaginary;     }     void operator =(Complex a)     {       real = a.real;       imaginary = a.imaginary;     }     void operator -=(Complex a)     {       real -= a.real;       imaginary -=a.imaginary;     }     void operator *=(Complex a)     {       double   r,                 i;       r = real;       i = imaginary;       real = r*a.real-i*a.imaginary;       imaginary=r*a.imaginary+i*a.real;     }     void operator /=(Complex a)     {       Complex temp(real,imaginary);       temp *= a.reciprical();       real = temp.real;       imaginary = temp.imaginary;     }     Complex reciprical()     {       Complex temp;       temp.real = real/(real*real - imaginary*imaginary);       temp.imaginary = (-imaginary)/(real*real - imaginary*imaginary);       return temp;     }     Complex operator +(Complex a)     {       Complex temp;       temp.real = real+a.real;       temp.imaginary = imaginary+a.imaginary;       return temp;     }     Complex operator -(Complex a)     {       Complex temp;       temp.real = real-a.real;       temp.imaginary = imaginary-a.imaginary;       return temp;     }     Complex operator *(Complex a)     {       Complex temp;       temp.real = real*a.real-imaginary*a.imaginary;       temp.imaginary=real*a.imaginary+imaginary*a.real;       return temp;     }     Complex operator /(Complex a)     {       Complex temp1,       temp2(real,imaginary);       temp1 = temp2 * a.reciprical();       return temp1;     } }; void main() {   char  i,         op;   double   real,           imaginary;   cout << "What is the first Complex number? (Enter in the form a + bi) ";   cin >> real >> op >> imaginary >> i;   Complex complex1(real,imaginary);   cout << endl << endl        << "What is the second Complex number? (Enter in the form a + bi) ";   cin >> real >> op >> imaginary >> i;   Complex complex2(real,imaginary);   Complex complex3 = complex1;   complex3 += complex2;   cout << endl << endl << "If ("        << complex1.showReal() << " + " << complex1.showImaginary()        << "i) += (" << complex2.showReal() << " + "        << complex2.showImaginary() << "i) then the result is "        << complex3.showReal() << " + " << complex3.showImaginary()        << "i";   complex3 = complex1;   complex3 -= complex2;   cout << endl << endl << "If ("        << complex1.showReal() << " + " << complex1.showImaginary()        << "i) -= (" << complex2.showReal() << " + "        << complex2.showImaginary() << "i) then the result is "        << complex3.showReal() << " + " << complex3.showImaginary()        << "i";   complex3 = complex1;   complex3 *= complex2;   cout << endl << endl << "If ("        << complex1.showReal() << " + " << complex1.showImaginary()        << "i) X= (" << complex2.showReal() << " + "        << complex2.showImaginary() << "i) then the result is "        << complex3.showReal() << " + " << complex3.showImaginary()        << "i";   complex3 = complex1;   complex3 /= complex2;   cout << endl << endl << "If ("        << complex1.showReal() << " + " << complex1.showImaginary()        << "i) /= (" << complex2.showReal() << " + "        << complex2.showImaginary() << "i) then the result is "        << complex3.showReal() << " + " << complex3.showImaginary()        << "i";   cout << endl << endl; } // program_id      COMPLEX.CPP // author        don voils // date written   10/21/2006 // // program description   This program illustrates the overloading //                             of the binary operations +, -, *, and / //                             to the complex numbers of the form a+bi. // #include<iostream> using namespace std; class Complex {      protected:           double real,               imaginary;      public:           Complex() { }           Complex(double r, double i)                      {  real = r;                        imaginary = i;                      }           double showReal()           {                        return real;                      }           double showImaginary()           {                         return imaginary;                      }           Complex operator +(Complex a)           {   Complex temp;              temp.real = real+a.real;              temp.imaginary = imaginary+a.imaginary;              return temp;           }           Complex operator -(Complex a)           {   Complex temp;              temp.real = real-a.real;              temp.imaginary = imaginary-a.imaginary;              return temp;           }           Complex operator *(Complex a)           {   Complex temp;              temp.real = real*a.real-imaginary*a.imaginary;              temp.imaginary=real*a.imaginary+imaginary*a.real;              return temp;           }           Complex operator /(Complex a)           {   Complex temp1,                                          temp2(real,imaginary);              temp1 = temp2 * a.reciprical();              return temp1;           }           Complex reciprical()           {               Complex temp;              temp.real = real/(real*real + imaginary*imaginary);              temp.imaginary = (-imaginary)/(real*real + imaginary*imaginary);              return temp;                     } }; void main() {      char  i,           op;      double real,          imaginary;     cout << "What is the first complex number? (Enter in the form a + bi) ";     cin >> real >> op >> imaginary >> i;     Complex complex1(real,imaginary);     cout << endl << endl          << "What is the second complex number? (Enter in the form a + bi) ";     cin >> real >> op >> imaginary >> i;     Complex complex2(real, imaginary);     Complex complex3;     complex3 = complex1 + complex2;     cout << endl << endl << "("               << complex1.showReal() << " + " << complex1.showImaginary()               << "i) + (" << complex2.showReal() << " + "               << complex2.showImaginary() << "i) = "               << complex3.showReal() << " + " << complex3.showImaginary()               << "i";     complex3 = complex1 - complex2;     cout << endl << endl << "("        << complex1.showReal() << " + " << complex1.showImaginary()        << "i) - (" << complex2.showReal() << " + "        << complex2.showImaginary() << "i) = "        << complex3.showReal() << " + " << complex3.showImaginary()        << "i";     complex3 = complex1 * complex2;     cout << endl << endl << "("              << complex1.showReal() << " + " << complex1.showImaginary()        << "i) X (" << complex2.showReal() << " + "        << complex2.showImaginary() << "i) = "        << complex3.showReal() << " + " << complex3.showImaginary()        << "i";     complex3 = complex1 / complex2;     cout << endl << endl << "("               << complex1.showReal() << " + " << complex1.showImaginary()               << "i) / (" << complex2.showReal() << " + "               << complex2.showImaginary() << "i) = "               << complex3.showReal() << " + " << complex3.showImaginary()               << "i" << endl << endl; } // program_id         date.cpp // author            don voils // date written      9/5/2006 // // program description    This program demonstrates input and output //                        by overloading << and >> // #include<iostream> using namespace std; class Date { public:  int show_month(){return month;}  int show_day(){return day;}  int show_year(){return year;} private:  int month,     day,     year; friend ostream &operator << (ostream &stream, Date ab); friend istream &operator >> (istream &stream, Date &ab); }; ostream &operator << (ostream &stream, Date ab) {     stream << ab.month << "/";     stream << ab.day << "/";     stream << ab.year << endl;     return stream; } istream &operator >> (istream &stream, Date &ab) {     char slash;     stream >> ab.month >> slash >> ab.day >> slash >> ab.year;     if(ab.year< 100)          if(ab.year >10)                ab.year += 1900;          else                ab.year += 2000;     return stream; } void clearscreen(); void main() {      clearscreen();      char resp;      Date today;      cout << "What is today's date? ";      cin >> today;      cout << endl << endl << "Did you say today's date was? ";      cout << today;      cout << endl << endl << "Continue? (Y/N)";      cin >> resp;      clearscreen(); } void clearscreen() {  for(short index=1;index<=250;++index)      cout << endl; } // program_id       dateoptr.cpp // author           don voils // date written     10/15/2006 // program description     This program demonstrates the use //                         of the keyword operator with respect to //                         overloading =, + and - in the //                         definition of the class date. // #include<iostream> using namespace std; class Date {       protected:            long   month,                             day,                             year;       public:           void getDate(void);           void setDate(long m,long d,long y);           long lastDay(long m,long y);           long showDay();           long showMonth();           long showYear();           bool leapYear(long y);           Date operator +(long number_days);           Date operator -(long number_days);           long operator - (Date other_date);           long daysSince(long m,long d,long y);           long f(long m,long y);           long g(long m);           bool incorrectDate(long m,long d,long y); }; // MAIN PROGRAM // void main() {           Date today,                           future,                           invDate,                           newInvDate;           bool badDate;           long numberDays;           do           {               cout << "How many days in the future do you want to go from today? ";               cin >> numberDays;           }while(numberDays<0);           cout << endl << endl;           cout << "What is today's date? ";           today.getDate();           future = today + numberDays;           cout << endl << endl << numberDays << " day(s) after " << today.showMonth()                            << "/" << today.showDay() << "/" << (today.showYear())                            << " will be " << (future.showMonth()) << "/" << (future.showDay())                            << "/" << (future.showYear()) << endl << endl;           do           {              badDate = true;              cout << "What was the invoice date? ";              invDate.getDate();              if ((today - invDate) < 0)                                    cout << endl << endl << "Invoice date cannot be after today!"                       << endl << endl;              else                                   badDate = false;           }while(badDate);           cout << endl << endl << "The invoice has been open "                         << (today - invDate) << " days." << endl << endl;           do           {                        cout << "How many days in the past do you want the invoice dated? ";                        cin >> numberDays;           }while(numberDays<0);           cout << endl << endl;           newInvDate = invDate - numberDays;           cout << endl<< endl << numberDays << " day(s) before "                    << invDate.showMonth()<< "/" << invDate.showDay() << "/"                    << (invDate.showYear())<< " will give an invoice date of "                    << (newInvDate.showMonth()) << "/"                    << (newInvDate.showDay()) << "/"                    << (newInvDate.showYear()) << endl << endl; } long Date::showDay() {    return day; } long Date::showMonth() {    return month; } long Date::showYear() {    return year; } void Date::getDate() {   char dash;   do   {     cin >> month >> dash >> day >> dash >> year;     if (year <= 10)          year += 2000;     else          if(year < 100)             year+=1900;    }while(incorrectDate(month, day, year)); } void Date::setDate(long m, long d, long y) {   month = m;   day = d;   year = y; } Date Date::operator + (long numberDays) {   Date nextDay;   nextDay.setDate(month, day, year);   for(int index=1;index <=numberDays;++index)   {     if (nextDay.day < lastDay(nextDay.month, nextDay.year))     {         nextDay.day += 1;     }     else     {        if(nextDay.month < 12)        {           nextDay.month += 1;           nextDay.day = 1;        }       else       {          nextDay.month = 1;          nextDay.day = 1;          nextDay.year += 1;       }   } } return nextDay; } Date Date::operator - (long numberDays) {   Date nextDay;   nextDay.setDate(month, day, year);   for(int index=1; index <= numberDays; ++index)   {     if (nextDay.day != 1)     {        nextDay.day -= 1;     }    else    {       if(nextDay.month != 1)       {          nextDay.month -= 1;          nextDay.day = lastDay(nextDay.month, nextDay.year);       }       else       {          nextDay.month = 12;          nextDay.day = 31;          nextDay.year -= 1;       }     }   }   return nextDay; } long Date::lastDay(long m, long y) {    int lastDay;    int daysInMonth[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};    if (m!=2)      lastDay=daysInMonth[m];   else     if (leapYear(y))        lastDay =29;     else        lastDay=daysInMonth[m];    return lastDay; } bool Date::leapYear(long y) {   bool leapTest;   if (((y%4 == 0) && (y%100 != 0)) || (y%400 == 0))     leapTest = true;   else     leapTest=false;   return leapTest; } bool Date::incorrectDate(long m, long d, long y) {   bool notCorrect;   if ((m >= 1) && (m <= 12) && (d >= 1) && (d <= lastDay(m,y)))      notCorrect = false;   else      notCorrect = true;   return notCorrect; } long Date::daysSince(long m, long d, long y) {   long number = 1461L*f(m, y)/4L + 153L*g(m)/5L + d;   return(number); } long Date::f(long m,long y) {   long number = (m <= 2L) ? y - 1L :y;   return(number); } long Date::g(long m) {   long number = (m <= 2L) ? m + 13L : m + 1L;   return(number); } long Date::operator - (Date bDate) {   long days;   days = daysSince(month, day, year)            -daysSince(bDate.month, bDate.day, bDate.year);   return days; } // program_id       datereln.cpp // author           don voils // date written     10/15/2006 // // program description     This program demonstrates the use //                         of the keyword operator with respect to //                         overloading =, + , -, <, <=,==,>,>= in the //                         definition of the class date. // #include<iostream> using namespace std; class Date {       private:           long   month,                            day,                            year;       public:           void getDate();           void setDate(int m, int d, int y);           int lastDay(int m, int y);           int showDay();           int showMonth();           int showYear();           bool leapYear(int y);            Date operator +(int number_days);           Date operator -(int number_days);           int operator -(Date other_date);           long daysSince(int m, int d, int y);           long f(int m, int y);           long g(int m);           bool incorrectDate(int m, int d, int y);            bool operator <(Date aDate);            bool operator <=(Date aDate);            bool operator ==(Date aDate);           bool operator >(Date aDate);           bool operator >=(Date aDate); }; // MAIN PROGRAM // void main() {   Date    today,           future,           invDate,           newInvDate;   bool badDate;   int numberDays;   do   {     cout << "How many days in the future do you want to go from today? ";     cin >> numberDays;   }while(numberDays < 0);   cout << endl << endl;   cout << "What is today's date? ";   today.getDate();   future = today + numberDays;   cout << endl<< endl << numberDays << " day(s) after " << today.showMonth()        << "/" << today.showDay() << "/" << ((today.showYear()))        << " is " << future.showMonth() << "/" << future.showDay()        << "/" << (future.showYear()) << endl << endl;   do   {     badDate = true;     cout << "What was the invoice date? ";     invDate.getDate();     if ((today < invDate))        cout << endl << endl << "Invoice date cannot be after today!"             << endl << endl;     else        if (today == invDate)           cout << endl << endl << "Invoice date cannot be today!"                << endl << endl;        else           badDate = false;   }while(badDate);   cout << endl << endl << "The invoice has been open "        << (today - invDate) << " days." << endl << endl;   do   {     cout << "How many days in the past do you want the invoice dated? ";     cin >> numberDays;   }while(numberDays<0);   cout << endl << endl;   newInvDate = (invDate - numberDays);   cout << endl<< endl << numberDays << " day(s) before " << invDate.showMonth()        << "/" << invDate.showDay() << "/" << ((invDate.showYear()))        << " will give an invoice date of " << (newInvDate.showMonth())        << "/" << newInvDate.showDay()        << "/" << (newInvDate.showYear()) << endl << endl; } int Date::showDay() {   return int(day); } int Date::showMonth() {   return int(month); } int Date::showYear() {   return int(year); } void Date::getDate() {  char    dash;  do  {    cin >> month >> dash >> day >> dash        >> year;    if(year <= 10)       year += 2000L;    else      if(year < 100L)         year += 1900L;   }while(incorrectDate(int(month), int(day), int(year))); } void Date::setDate(int m, int d, int y) {   month = long(m);   day = long(d);   year = long(y); } Date Date::operator + (int numberDays) {   Date nextDay;   nextDay.setDate(int(month), int(day), int(year));   for(int index=1; index <=numberDays; ++index)   {     if (nextDay.day < lastDay(int(nextDay.month), int(nextDay.year)))     {         nextDay.day += 1L;     }     else     {         if(nextDay.month<12L)         {           nextDay.month += 1L;           nextDay.day = 1L;         }         else         {           nextDay.month = 1L;           nextDay.day = 1L;           nextDay.year += 1L;         }      }   }   return nextDay; } Date Date::operator - (int numberDays) {   Date nextDay;   nextDay.setDate(int(month), int(day), int(year));   for(int index=1; index <= numberDays; ++index)   {     if (nextDay.day != 1L)     {         nextDay.day -= 1L;     }     else     {       if(nextDay.month != 1L)       {           nextDay.month -= 1L;           nextDay.day = lastDay(int(nextDay.month),int(nextDay.year));       }       else       {          nextDay.month = 12L;          nextDay.day = 31L;          nextDay.year -= 1L;       }    } }    return nextDay; } int Date::lastDay(int m,int y) {    int lastDay;    int daysInMonth[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};    if (m!=2)       lastDay=daysInMonth[m];    else       if (leapYear(y))           lastDay =29;       else         lastDay=daysInMonth[m];    return lastDay; } bool Date::leapYear(int y) {    bool leapTest;    if (((y%4 == 0) && (y%100 != 0)) || (y%400==0))        leapTest=true;    else        leapTest=false;    return leapTest; } bool Date::incorrectDate(int m, int d, int y) {   bool notCorrect;   if ((m >= 1) && (m <= 12) && (d >= 1) && (d <= lastDay(m,y)))       notCorrect = false;   else       notCorrect = true;   return notCorrect; } long Date::daysSince(int m, int d, int y) {    long number = 1461L*f(m,y)/4L + 153L*g(m)/5L + d;    return(number); } long Date::f(int m,int y) {    long number = (m<=2L) ? y - 1L :y;    return(number); } long Date::g(int m) {    long number = (m<=2L) ? m + 13L : m + 1L;    return(number); } int Date::operator - (Date bDate) {    long days;    days = daysSince(int(month), int(day), int(year)) - daysSince(int(bDate.month),                                     int(bDate.day),int(bDate.year));     return int(days); }   bool Date::operator >(Date aDate) {     bool resp;     long   firstDate,          secondDate;     firstDate = daysSince(int(month), int(day), int(year));     secondDate = daysSince(int(aDate.month), int(aDate.day), int(aDate.year));     resp = (firstDate > secondDate)? true : false;     return resp; } bool Date::operator >=(Date aDate) {     bool resp;     long  firstDate,         secondDate;     firstDate = daysSince(int(month), int(day), int(year));     secondDate = daysSince(int(aDate.month),int(aDate.day),int(aDate.year));     resp = (firstDate >= secondDate)? true : false;     return resp; } bool Date::operator ==(Date aDate) {      bool resp;      long    firstDate,            secondDate;      firstDate = daysSince(int(month), int(day), int(year));      secondDate = daysSince(int(aDate.month),int(aDate.day),int(aDate.year));      resp = (firstDate == secondDate)? true : false;      return resp; } bool Date::operator <(Date aDate) {  bool resp;  long firstDate,       secondDate; firstDate=daysSince(int(month),int(day),int(year));   secondDate=daysSince(int(aDate.month),int(aDate.day),int(aDate.year));   resp = (firstDate < secondDate)? true : false;   return resp; } bool Date::operator <= (Date aDate) {   bool resp;   long      firstDate,            secondDate;   firstDate = daysSince(int(month),int(day),int(year));   secondDate = daysSince(int(aDate.month),int(aDate.day),int(aDate.year));   resp = (firstDate <= secondDate)? true : false;   return resp; } // program_id       datoptr2.cpp // author           don voils // date written    10/29/2006 // // program description     This program demonstrates the use //                         of the keyword operator with the //                         keyword friend. // #include<iostream> using namespace std; class Date {       protected:           long month,                            day,                            year;       public:           void getDate();           void setDate(long m,long d,long y);           long lastDay();           long showDay();           long showMonth();           long showYear();           bool leapYear(long y);           Date operator +(long numberDays);           Date operator -(long numberDays);           long operator - (Date otherDate);           long daysSince(long m, long d, long y);           long f(long m,long y);           long g(long m);           bool incorrectDate();           friend Date operator +(long numberDays, Date aDate); }; Date operator +(long numberDays,Date aDate) {     Date nextDay;     nextDay.setDate(aDate.month, aDate.day, aDate.year);     for(int index=1; index <=numberDays; ++index)     {          if (nextDay.day < nextDay.lastDay())          {                nextDay.day += 1;          }          else          {                if(nextDay.month<12)                {                     nextDay.month += 1;                     nextDay.day = 1;                }                else                {                     nextDay.month = 1;                     nextDay.day = 1;                     nextDay.year += 1;                }          }     }     return nextDay; } // MAIN PROGRAM // void main() {      Date  today,                  future,                  newFuture;           long numberDays;      do      {          cout << "How many days in the future do you want to go from today? ";          cin >> numberDays;      }while(numberDays<0);      cout << endl << endl;      cout << "What is today's date? ";      today.getDate();      future = today + numberDays;      newFuture = numberDays + today;      cout << endl<< endl << numberDays << " day(s) after " << today.showMonth()                 << "/" << today.showDay() << "/" << (today.showYear())                << " will be " << (future.showMonth()) << "/" << (future.showDay())                << "/" << (future.showYear()) << endl << endl << endl;           cout << endl<< endl << "Did you say: " << numberDays                << " day(s) after " << today.showMonth()                << "/" << today.showDay() << "/" << (today.showYear())                << " will be " << (newFuture.showMonth()) << "/" << (newFuture.showDay())               << "/" << (newFuture.showYear()) << endl << endl << endl; } long Date::showDay() {    return day; } long Date::showMonth() {    return month; } long Date::showYear() {    return year; } void Date::getDate() {    char    dash;    do    {          cin >> month >> dash >> day >> dash >> year;          if(year <=10)              year += 2000;          else             if(year < 100)                 year+=1900;    }while(incorrectDate()); } void Date::setDate(long m, long d, long y) {      month = m;      day = d;      year = y; } Date Date::operator + (long numberDays) {      Date nextDay;      nextDay.setDate(month, day, year);      for(int index=1; index <=numberDays; ++index)      {           if (nextDay.day < nextDay.lastDay())           {                 nextDay.day += 1;           }           else           {                 if(nextDay.month<12)                 {                      nextDay.month += 1;                      nextDay.day = 1;                 }                 else                 {                      nextDay.month = 1;                      nextDay.day = 1;                      nextDay.year += 1;                 }           }      }      return nextDay; } Date Date::operator - (long numberDays) {      Date nextDay;      nextDay.setDate(month, day, year);      for(int index=1; index <= numberDays; ++index)      {           if (nextDay.day != 1)           {                 nextDay.day -= 1;           }           else           {                 if(nextDay.month != 1)                 {                      nextDay.month -= 1;                      nextDay.day = nextDay.lastDay();                 }                 else                 {                      nextDay.month = 12;                      nextDay.day = 31;                      nextDay.year -= 1;                 }           }      }      return nextDay; } long Date::lastDay() {      int lastDay;      int daysInMonth[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};      if (month != 2)          lastDay=daysInMonth[int(month)];      else          if (leapYear(year))                 lastDay = 29;          else                 lastDay = daysInMonth[int(month)];      return lastDay; } bool Date::leapYear(long y) {      bool leapTest;      if (((y%4 == 0) && (y%100 != 0)) || (y%400 == 0))            leapTest = true;      else            leapTest=false;      return leapTest; } bool Date::incorrectDate() {      bool notCorrect;      if ((month >= 1) && (month <= 12) && (day >= 1) && (day <= lastDay()))           notCorrect = false;      else           notCorrect = true;      return notCorrect; } long Date::daysSince(long m, long d, long y) {      long number = 1461L*f(m,y)/4L + 153L*g(m)/5L + d;      return(number); } long Date::f(long m, long y) {      long number = (m <= 2L) ? y - 1L :y;      return(number); } long Date::g(long m) {      long number = (m <= 2L) ? m + 13L : m + 1L;      return(number); } long Date::operator - (Date bDate) {      long days;      days = daysSince(month, day, year)           -daysSince(bDate.month,bDate.day,bDate.year);      return days; } //   program_id     FUTRPAS1.CPP //   author       don voils //   date written  10/25/2006 //   program description   This example illustrates a non member //            function which is a operator. This //            example is similar to FUTRPAS3.CPP //            except that one has private data members //            while this one has public data members. // #include<iostream> using namespace std; class Date {    public:      long  month,          day,          year;      Date(){ }      Date(long m, long d, long y)      {    month=m;           day=d;           year=y;      }      void setDate(long m, long d,long y)             {                      month=m; day=d; year=y;             }      void setMmonth(long m)             {                      month=m;             }      void setDay(long d)             {                      day=d;             }      void setYear(long y)             {                      year = y;             }      long showDay()             {                      return day;             }      long showMonth()             {                      return month;             }      long showYear()             {                      return year;             } }; void operator ++(Date &aDate); bool leapYear(long y); long lastDay(long m, long y); void main() {   Date aDate(12, 31, 2006);   cout << "Date was " << aDate.showMonth() << "/"        << aDate.showDay() << "/"        << aDate.showYear() << endl << endl;   ++aDate;   cout << "Date is now " << aDate.showMonth() << "/"        << aDate.showDay() <<"/" << aDate.showYear()        << endl << endl << endl; } void operator ++(Date &aDate) {   if (aDate.day < lastDay(aDate.month,aDate.year))       aDate.day = aDate.day+1;   else   {     if(aDate.month<12)     {    aDate.month=aDate.month+1;         aDate.day = 1;     }     else     {         aDate.month=1;         aDate.day=1;         aDate.year=aDate.year+1;     }   } } long lastDay(long m, long y) {    long lastDay;    int daysInMonth[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};    if (m!=2)      lastDay=daysInMonth[int(m)];    else      if (leapYear(y))             lastDay =29;      else             lastDay=daysInMonth[int(m)];   return lastDay; } bool leapYear(long y) {   bool leapTest;   if (((y%4 == 0) && (y%100 != 0)) || (y%400 == 0))   {      leapTest=true;   }   else   {     leapTest=false;   }   return leapTest; } // program_id       futrpas2.cpp // author           don voils // date written    10/15/2006 // program description      This program demonstrates the use of the //                           keyword operator with the increment operator //                           ++() and the decreament operator --() //                           with the ability to assign the new values //                           to another day in the definiion of the //                           class date. // #include<iostream> using namespace std; class Date {       private:           long  month,                            day,                            year;       public:           void getDate(void);           void setDate(long m,long d,long y);           long lastDay(long m,long y);           long showDay();           long showMonth();           long showYear();           bool leapYear(long y);           Date operator ++();           Date operator --();           bool incorrectDate(long m, long d, long y); }; // MAIN PROGRAM // void main() {   Date  theDay,         nextDay,         aDay,         bDay;    cout << "What is the date today? ";    theDay.getDate();    cout << endl << endl << "If today is " << theDay.showMonth() << "/"              << (theDay.showDay()) << "/" << (theDay.showYear())              << ", then tomorrow will be ";    ++theDay;    cout << (theDay.showMonth()) << "/"               << (theDay.showDay()) << "/" << (theDay.showYear());    nextDay = ++theDay;    cout << endl << endl << "The day after that would be "              << (theDay.showMonth()) << "/" << theDay.showDay()              << "/" << (theDay.showYear()) << " or may be "              << (nextDay.showMonth()) << "/" << (nextDay.showDay())              << "/" << (nextDay.showYear());    cout << endl << endl << "What was the second day you wanted checked? ";    aDay.getDate();    cout << endl << endl << "If second day is " << (aDay.showMonth())              << "/" << (aDay.showDay()) << "/"              << (aDay.showYear()) << ", then the day before was ";    --aDay;    cout << aDay.showMonth() << "/"              << aDay.showDay() << "/" << (aDay.showYear());    bDay = --aDay;    cout << endl << endl << "The day before that would be "              << aDay.showMonth() << "/" << (aDay.showDay())              << "/" << (aDay.showYear()) << " or may be "              << (bDay.showMonth()) << "/" << (bDay.showDay())              << "/" << (bDay.showYear()) << endl << endl; } long Date::showDay() {   return day; } long Date::showMonth() {   return month; } long Date::showYear() {   return year; } void Date::getDate() {   char    dash;   do   {       cin >> month >> dash >> day >> dash >> year;   }while(incorrectDate(month, day, year)); } void Date::setDate(long m, long d, long y) {   month = m;   day = d;   year = y; } Date Date::operator ++() {   Date temp;   if (day < lastDay(month, year))   {      day = day + 1;   }   else   {     if(month < 12)     {              month = month+1;              day = 1;     }     else     {              month = 1;              day = 1;              year = year + 1;     }   }   temp.setDate(month, day, year);   return temp; } Date Date::operator --() {   Date temp;   if (day != 1)   {       day -= 1;   }   else   {     if(month !=1)     {          month -= 1;          day = lastDay(month,year);     }     else     {          month = 12;          day = 31;          year -= 1;     }   }   temp.setDate(month, day, year);   return temp; } long Date::lastDay(long m,long y) {   int lastDay;   int daysInMonth[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};   if (m != 2)      lastDay=daysInMonth[int(m)];   else      if (leapYear(y))            lastDay =29;   else            lastDay=daysInMonth[int(m)];   return lastDay; } bool Date::leapYear(long y) {   bool leapTest;   if (((y%4 == 0) && (y%100 != 0)) || (y%400 == 0))      leapTest = true;   else      leapTest=false;   return leapTest; } bool Date::incorrectDate(long m, long d, long y) {      bool notCorrect;      if ((m >= 1) && (m <= 12) && (d >= 1) && (d <= lastDay(m,y)))           notCorrect = false;     else          notCorrect = true;     return notCorrect; } //   program_id     FUTRPAS3.CPP //         author          don voils //   date written  10/25/2006 //   program description   This program demonstrates a non member //            function which is a unary operation. //            The class has private members. This //            example is similar to FUTRPAS1.CPP //            except that one has public members. // #include<iostream> using namespace std; class Date {      private:           long  month,               day,               year;      public:           Date(){ }           Date(long m,long d,long y)                       {                         month = m;                         day = d;                         year = y;                       }           void setDate(long m, long d, long y)                       {                         month = m;                         day = d;                         year = y;                       }           void setMonth(long m)                       {                         month = m;                       }           void setDay(long d)                       {                         day = d;                       }           void setYear(long y)                       {                         year = y;                       }                       long showDay()                       {                         return day;                       }            long showMonth()                       {                         return month;                       }                       long showYear()                       {                         return year;                       } }; void operator ++(Date &aDate); bool leapYear(long y); long lastDay(long m, long y); void main() { Date aDate(12,31,2006); cout << "Date was " << aDate.showMonth() << "/"      << aDate.showDay() << "/"      << aDate.showYear() << endl << endl; ++aDate; cout << "Date is now " << aDate.showMonth() << "/"      << aDate.showDay() <<"/" << aDate.showYear()      << endl << endl << endl; } void operator ++(Date &aDate) {   if (aDate.showDay() < lastDay(aDate.showMonth(),aDate.showYear()))      aDate.setDate(aDate.showMonth(), aDate.showDay()+1, aDate.showYear());   else   {      if(aDate.showMonth() < 12)      {           aDate.setDate(aDate.showMonth()+1, 1, aDate.showYear());      }      else      {           aDate.setDate(1, 1, aDate.showYear()+1);      }   } } long lastDay(long m, long y) {      long lastDay;      long daysInMonth[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 ,31};      if (m != 2)           lastDay=daysInMonth[int(m)];      else           if (leapYear(y))                  lastDay =29;           else                  lastDay=daysInMonth[int(m)];      return lastDay; } bool leapYear(long y) {      bool leapTest;      if (((y%4 == 0) && (y%100 != 0)) || (y%400 == 0))      {           leapTest=true;      }      else      {           leapTest=false;      }      return leapTest; } // program_id       futrpas4.cpp // author           don voils // date written    10/15/2006 // // program description      This program demonstrates the use of the //                           keyword operator with the increment operator //                           ++() and the decreament operator --() in //                           the definition of the class Date. // #include<iostream> using namespace std; class Date {       private:           long  month,                                  day,                                  year;       public:           void getDate();           void setDate(long m, long d, long y);           long lastDay(long m, long y);           long showDay();           long showMonth();           long showYear();           bool leapYear(long y);           void operator ++();           void operator --();           bool incorrectDate(long m, long d, long y); }; // MAIN PROGRAM // void main() {      Date   theDay,                  aDay;      cout << "What is the date today? ";      theDay.getDate();      cout << endl << endl << "If today is " << theDay.showMonth() << "/"                << theDay.showDay() << "/" << (theDay.showYear())                << ", then tomorrow will be ";      ++theDay;      cout << theDay.showMonth() << "/"                 << theDay.showDay() << "/" << (theDay.showYear());      // Notice that this post operator compiles even though it is not      // explicitly defined while the post decrement below does not.      //      theDay++;      cout << endl << "and the day after that will be " << (theDay.showMonth())                << "/" << (theDay.showDay()) << "/"                << (theDay.showYear());      cout << endl << endl << "What was the second day you wanted checked? ";      aDay.getDate();      cout << endl << endl << "If second day is " << aDay.showMonth()                << "/" << aDay.showDay() << "/"                << (aDay.showYear()) << ", then the day before was ";            --aDay;      cout << aDay.showMonth() << "/"                << aDay.showDay() << "/" << (aDay.showYear());      // Notice that if the comments below are removed then the program will not compile.      // In previous versions of Microsoft C++, this did compile.             // aDay--;      cout << endl << "and the day before that was " << aDay.showMonth()                << "/" << aDay.showDay() << "/" << (aDay.showYear()) << endl << endl; } long Date::showDay() {      return day; } long Date::showMonth() {      return month; } long Date::showYear() {      return year; } void Date::getDate() {      char    dash;      do      {          cin >> month >> dash >> day >> dash >> year;      }while(incorrectDate(month,day,year)); } void Date::setDate(long m, long d, long y) {      month = m;      day = d;      year = y; } void Date::operator ++() {      if (day < lastDay(month, year))      {           day = day + 1;      }      else      {          if(month<12)          {               month=month + 1;               day = 1;          }          else          {               month=1;               day=1;               year=year+1;          }      } } void Date::operator --() {      if (day != 1)      {           day -= 1;      }      else      {           if(month !=1)           {                month -= 1;                day = lastDay(month,year);           }           else           {                month=12;                day = 31;                year -= 1;           }      } } long Date::lastDay(long m,long y) {      long lastDay;      long daysInMonth[]={0L, 31L, 28L, 31L, 30L, 31L, 30L, 31L, 31L, 30L, 31L, 30L, 31L};      if (m != 2)          lastDay=daysInMonth[int(m)];      else          if (leapYear(y))                 lastDay = 29;          else                 lastDay=daysInMonth[int(m)];      return lastDay; } bool Date::leapYear(long y) {      bool leapTest;      if (((y%4 == 0) && (y%100 != 0)) || (y%400 == 0))           leapTest=true;      else           leapTest=false;      return leapTest; } bool Date::incorrectDate(long m, long d, long y) {      bool notCorrect;      if ((m >= 1) && (m <= 12) && (d >= 1) && (d <= lastDay(m,y)))           notCorrect = false;      else           notCorrect = true;      return notCorrect; } // program_id       futrpast.cpp // author           don voils // date written    10/15/2006 // // program description      This program demonstrates the use of the //                          keyword operator with the increment operator //                          ++() and the decreament operator --() in //                          the definition of the class date. This //                    program differs from futrpas4.cpp in that //                    the post operators are done using the new //                    definition and these operators return date //                    objects. // #include<iostream> using namespace std; class Date {       private:            long  month,                day,                year;       public:           void getDate();           void setDate(long m,long d,long y);           long lastDay(long m,long y);           long showDay();           long showMonth();           long showYear();           bool leapYear(long y);           Date operator ++();           Date operator --();           Date operator ++(int notused);           Date operator --(int notused);           bool incorrectDate(long m, long d, long y); }; // MAIN PROGRAM // void main() {      Date  theDay,                  aDay,                  bDay;      cout << "What is the date today? ";      theDay.getDate();      cout << endl << endl << "If today is " << theDay.showMonth() << "/"                << theDay.showDay() << "/" << ((theDay.showYear()))                << ", then tomorrow will be ";      bDay = ++theDay;      cout << theDay.showMonth() << "/"                << theDay.showDay() << "/" << (theDay.showYear());      cout << endl << endl << "Or was that " << bDay.showMonth() << "/"                << bDay.showDay() << "/" << (bDay.showYear());      bDay = theDay++;      cout << endl << endl << "and the day after that will be "                << theDay.showMonth() << "/" << theDay.showDay()                << "/" << (theDay.showYear());      cout << endl << endl << "Or was that " << bDay.showMonth() << "/"                << bDay.showDay() << "/" << (bDay.showYear());      cout << endl << endl << "What was the second day you wanted checked? ";      aDay.getDate();      cout << endl << endl << "If second day is " << aDay.showMonth()                << "/" << aDay.showDay() << "/"                << (aDay.showYear()) << ", then the day before was ";      bDay = --aDay;      cout << endl << endl << "Or was that " << bDay.showMonth() << "/"                << bDay.showDay() << "/" << (bDay.showYear());      bDay = aDay--;      cout << endl << endl << "and the day before that was "                << aDay.showMonth() << "/" << aDay.showDay() << "/"                << (aDay.showYear());            cout << endl << endl << "Or was that " << bDay.showMonth() << "/"                 << bDay.showDay() << "/" << (bDay.showYear())                 << endl << endl; } long Date::showDay() {   return day; } long Date::showMonth() {   return month; } long Date::showYear() {   return year; } void Date::getDate() {   char dash;   do   {     cin >> month >> dash >> day >> dash >> year;   }while(incorrectDate(month, day, year)); } void Date::setDate(long m, long d, long y) {   month = m;   day = d;   year = y; } Date Date::operator ++() {   Date temp;   if (day < lastDay(month, year))   {      day = day+1;   }   else   {      if(month<12)      {         month = month+1;         day = 1;      }      else      {         month = 1;         day = 1;         year = year+1;      }   }   temp.setDate(month,day,year);   return temp; } Date Date::operator --() {   Date temp;   if (day != 1)   {      day -= 1;   }   else   {      if(month !=1)      {         month -= 1;         day = lastDay(month, year);      }      else      {         month=12;         day = 31;         year -= 1;      }   }   temp.setDate(month, day, year);   return temp; } Date Date::operator ++(int notused) {   Date temp;   temp.setDate(month, day, year);   if (day < lastDay(month, year))   {      day = day+1;   }   else   {      if(month < 12)      {         month = month+1;         day = 1;      }      else      {         month = 1;         day = 1;         year = year+1;      }   }   return temp; } Date Date::operator --(int notused) {   Date temp;   temp.setDate(month,day,year);   if (day != 1)   {      day -= 1;   }   else   {     if(month !=1)     {        month -= 1;        day = lastDay(month,year);     }     else     {        month = 12;        day = 31;        year -= 1;     }   }   return temp; } long Date::lastDay(long m, long y) {   long lastDay;   long daysInMonth[]={0L, 31L, 28L, 31L, 30L, 31L, 30L, 31L, 31L, 30L, 31L, 30L, 31L};   if (m!=2)      lastDay=daysInMonth[int(m)];   else      if (leapYear(y))         lastDay =29;      else         lastDay=daysInMonth[int(m)];   return lastDay; } bool Date::leapYear(long y) {   bool leapTest;   if (((y%4 == 0) && (y%100 != 0)) || (y%400 == 0))      leapTest = true;   else      leapTest = false;   return leapTest; } bool Date::incorrectDate(long m,long d,long y) {   bool notCorrect;   if ((m >= 1) && (m <= 12) && (d >= 1) && (d <= lastDay(m,y)))      notCorrect = false;   else      notCorrect = true;   return notCorrect; } // program_id    rationals.cpp // written_by    don voils // date_written  9/2/2006 // description  This file contains the methods for //               the class rationals contained in the header //                file: rational.h // #include<iostream> using namespace std; #include"rationals.h"      Rationals::Rationals()      {          top = 0;          bottom = 1;      }      Rationals::Rationals(long theTop,long theBottom)      {          top = theTop;          bottom = theBottom;      }      void Rationals::setTop(long theTop)      {           Rationals temp(theTop,bottom);                temp.reduced();           top = temp.top;           bottom = temp.bottom;      }      void Rationals::setBottom(long theBottom)      {           Rationals temp(top,theBottom);                temp.reduced();           top = temp.top;           bottom = temp.bottom;      }      long Rationals::getTop()      {           return top;      }      long Rationals::getBottom()      {           return bottom;      }      void Rationals::reduced()      {           long GCD = gcd(top,bottom);           top   = long((top*1.0)/(GCD*1.0));           bottom = long((bottom*1.0)/(GCD*1.0));      }      long Rationals::gcd(long a, long b)            {        long c,           d;        d = (a<b)? a : b;        c = (a<b)? b : a;        while(d!=0)        {          long e,f;          e = c/d;          f = c - d*e;          c = d;          d = f;        }        return c;             }      Rationals Rationals::operator +(Rationals theOne)      {           Rationals temp(top*theOne.bottom+bottom*theOne.top,bottom*theOne.bottom);           temp.reduced();           return temp;      }      Rationals Rationals::operator -(Rationals theOne)      {           Rationals temp(top*theOne.bottom-bottom*theOne.top,bottom*theOne.bottom);           temp.reduced();           if(temp.bottom < 0)           {                temp.bottom = -temp.bottom;                temp.top = -temp.top;           }           return temp;      }      Rationals Rationals::operator *(Rationals theOne)      {           Rationals temp(top*theOne.top,bottom*theOne.bottom);                 temp.reduced();           if(temp.bottom < 0)           {                temp.bottom = -temp.bottom;                temp.top = -temp.top;           }           return temp;      }      Rationals Rationals::operator /(Rationals theOne)      {           Rationals temp(top*theOne.bottom,bottom*theOne.top);                 temp.reduced();           return temp;      }      bool Rationals::operator <(Rationals theOne)      {           return (top * theOne.bottom < theOne.top * bottom);      }      bool Rationals::operator <=(Rationals theOne)      {           return (top * theOne.bottom <= theOne.top * bottom);      }      bool Rationals::operator >(Rationals theOne)      {           return (top * theOne.bottom > theOne.top * bottom);      }      bool Rationals::operator >=(Rationals theOne)      {           return (top * theOne.bottom >= theOne.top * bottom);      }      bool Rationals::operator ==(Rationals theOne)      {           return (top * theOne.bottom == theOne.top * bottom);      }            ostream &operator << (ostream &stream, Rationals ab)            {                stream << ab.top << "/" << ab.bottom << " ";                return stream;            }            istream &operator >> (istream &stream, Rationals &ab)            {               char slash;               stream >> ab.top >> slash >> ab.bottom;               ab.reduced();               return stream;            } // program_id    rationals.h // written_by    don voils // date_written  9/2/2006 // description   This file contains the definition of the //               class Rationals. The methods are contained in //               the file: rationals.cpp. // #ifndef RATIONALS #define RATIONALS class Rationals {   private:     long top;     long bottom;   public:     Rationals();           Rationals(long theTop,long theBottom);     void setTop(long theTop);     void setBottom(long theBottom);     long getTop();     long getBottom();           void reduced();     long gcd(long a, long b);     Rationals operator +(Rationals theOne);     Rationals operator -(Rationals theOne);     Rationals operator *(Rationals theOne);     Rationals operator /(Rationals theOne);     bool operator <(Rationals theOne);     bool operator <=(Rationals theOne);     bool operator >(Rationals theOne);     bool operator >=(Rationals theOne);     bool operator ==(Rationals theOne);     friend ostream &operator << (ostream &stream, Rationals ab);           friend istream &operator >> (istream &stream, Rationals &ab); }; #endif //   program_id        RATOREAL.CPP //   author          don voils //   date written     10/20/2006 // //   program description             This program illustrates creation of type //                 conversions from a ratio to system data //                 types and from system data types to a ratio. // //                 Type conversions shown: // //                 a_double = double(a_ratio); //                 a_ratio = ratio(a_double); //                 an_int = int(a_ratio) //                 a_ratio = ratio(an_int); //                 a_float = float(a_ratio); //                 a_ratio = ratio(a_float); // #include<iostream> using namespace std; class Ratio {      private:           long  top,                                 bottom;      public:           Ratio() { }           Ratio(long n, long d) {top=n; bottom=d;}           Ratio(double a_double)           {                top = long(a_double*1000000L);                bottom = 1000000L;           }           Ratio(float a_float)           {                top = long(a_float*1000000L);                bottom = 1000000L;           }           Ratio(int an_int)           {                top = long(an_int);                bottom = 1L;           }           long showTop()                      {                                return top;                      }           long showBottom()                      {                               return bottom;                      }           void reduced()           {                long GCD = gcd(top,bottom);                top = long((top*1.0)/(GCD*1.0));                bottom = long((bottom*1.0)/(GCD*1.0));           }           operator double()           {                                double temp = double((top*1.0)/(bottom*1.0));               return temp;           }           operator float()           {               float temp = float((top*1.0)/(bottom*1.0));               return temp;           }           operator int()           {               return int((top*1.0)/(bottom*1.0));           }           long gcd(long a, long b); }; void main() {      char  dash;      long  n,d;      cout << "What was the fraction? (Enter in the form a/b) ";      cin >> n >> dash >> d;      Ratio aRatio(n,d);      double aDouble = double(aRatio);      float aFloat = float(aRatio);      int anInt = int(aRatio);      cout << endl << endl << "The fraction " << aRatio.showTop() << "/"                 << aRatio.showBottom() << " = " << aDouble << " a double "                <<endl << endl;      cout << endl << endl << "The fraction " << aRatio.showTop() << "/"                 << aRatio.showBottom() << " = " << aFloat << " a float "                <<endl << endl;      cout << endl << endl << "The fraction " << aRatio.showTop() << "/"                << aRatio.showBottom() << " = " << anInt << " an int "                <<endl << endl;      Ratio dRatio = Ratio(aDouble);      Ratio fRatio = Ratio(aFloat);      Ratio iRatio = Ratio(anInt);      dRatio.reduced();      fRatio.reduced();      iRatio.reduced();      cout << endl << "The double " << aDouble << " = " << dRatio.showTop()                << "/" << dRatio.showBottom() << endl << endl;      cout << "The float " << aFloat << " = " << fRatio.showTop()                << "/" << fRatio.showBottom() << endl << endl;      cout << "The int " << anInt << " = " << iRatio.showTop() << "/"                << iRatio.showBottom() << endl << endl; } long Ratio::gcd(long a, long b) {      long  c,                      d;      d = (a<b)? a : b;      c = (a<b)? b : a;      while(d!=0)      {           long e,f;           e = c/d;           f = c - d*e;           c = d;           d = f;      }      return c; } // program_id         stock1.cpp // author             don voils // date written       2/20/2006 // // program description    This program demonstrates the //                        overloading of a relational operator. // #include<iostream> #include<string> using namespace std; class theStock {   private:      string stockName;      string stockID;      float stockPrice;   public:            void setstockName(string theName)      {           stockName=theName;      }            void setstockID(string theID)      {           stockID=theID;      }      void setstockPrice(float thePrice)      {           stockPrice=thePrice;      }      string getstockName()      {           return stockName;      }      string getstockID()      {           return stockID;      }      float getstockPrice()      {           return stockPrice;      }            bool operator <(theStock yourStock)      {           bool temp;           if(stockName < yourStock.getstockName())                 temp = true;           else                 temp = false;           return temp;      } }; void clearscreen(); void main() {     clearscreen();     theStock myStock,              yourStock;     string theName,            theID;     float thePrice;     cout << "What is the name of my stock? ";     getline(cin,theName);     myStock.setstockName(theName);     cout << "What is the ID of my stock? ";     cin >> theID;     myStock.setstockID(theID);     cout << "What is the price of my stock? ";     cin >> thePrice;     myStock.setstockPrice(thePrice);     cin.get();     cout << endl << endl << "My stock is the following: "          << endl;     cout << myStock.getstockName() << endl;     cout << myStock.getstockID() << endl;     cout << myStock.getstockPrice() << endl << endl;     cout << "What is the name of your stock? ";     getline(cin,theName);     yourStock.setstockName(theName);     cout << "What is the ID of my stock? ";     cin >> theID;     yourStock.setstockID(theID);     cout << "What is the price of my stock? ";     cin >> thePrice;     yourStock.setstockPrice(thePrice);     cout << endl << endl << "Your stock is the following: "          << endl;     cout << yourStock.getstockName() << endl;     cout << yourStock.getstockID() << endl;     cout << yourStock.getstockPrice() << endl << endl;     if(myStock < yourStock)        cout << "My stock is before your stock in the listing. " << endl;     else        cout << "Your stock is before my stock in the listing. " << endl;     char resp;     cout << endl << endl << "Continue? (Y/N)";     cin >> resp;     clearscreen(); } void clearscreen() {  for(short index=1;index<=250;++index)       cout << endl; } // program_id         stock2.cpp // author             don voils // date written       2/20/2006 // // program description    This program demonstrates input and output //                         by overloading << and >> // #include<iostream> #include<string> using namespace std; class theStock {  private:      string stockName;      string stockID;      float stockPrice;  public:           void setstockName(string theName)     {          stockName=theName;     }           void setstockID(string theID)     {          stockID=theID;     }     void setstockPrice(float thePrice)     {          stockPrice=thePrice;     }     string getstockName()     {          return stockName;     }     string getstockID()     {           return stockID;     }     float getstockPrice()     {           return stockPrice;     }            friend istream &operator >> (istream &stream, theStock &myStock);            friend ostream &operator << (ostream &stream, theStock &myStock); }; istream &operator >> (istream &stream, theStock &myStock) {     cout << "What is the stock name? ";     getline(stream,myStock.stockName);     cout << "What is the stock ID? ";     stream >> myStock.stockID;     cout << "What is the stock price? ";     stream >> myStock.stockPrice;     cin.get();     return stream; } ostream &operator << (ostream &stream, theStock &myStock) {     cout << "Stock Name: ";     stream << myStock.getstockName();     cout << endl << "Stock ID: ";     stream << myStock.getstockID();     cout << endl << "Stock Price: ";     stream << myStock.getstockPrice()<< endl;     return stream; } void clearscreen(); void main() {      clearscreen();      theStock myStock,             yourStock;     cin >> myStock;     cout << endl << endl << "My stock is the following: "          << endl;     cout << myStock;     cout << endl << endl;     cin >> yourStock;     cout << endl << endl << "Your stock is the following: "          << endl;     cout << yourStock;     char resp;     cout << endl << endl << "Continue? (Y/N)";     cin >> resp;     clearscreen(); } void clearscreen() {  for(short index=1;index<=250;++index)       cout << endl; } // program_id          stock3.cpp // author              don voils // date written       2/20/2006 // // program description    This program demonstrates input and output //                         by overloading << and >> where the >> operator //                         is connected to an external text file. // #include<fstream> #include<iostream> #include<string> using namespace std; class theStock {  private:            string stockName;      string stockID;      float stockPrice;  public:           void setstockName(string theName)     {          stockName=theName;     }           void setstockID     {          stockID=theID;     }     void setstockPrice(float thePrice)     {          stockPrice=thePrice;     }     string getstockName()     {          return stockName;     }     string getstockID()     {          return stockID;     }     float getstockPrice()     {           return stockPrice;     }     friend istream &operator >> (istream &stream, theStock &myStock);     friend ostream &operator << (ostream &stream, theStock &myStock); }; istream &operator >> (istream &stream, theStock &myStock) {    getline(stream,myStock.stockName);    stream >> myStock.stockID;    stream >> myStock.stockPrice;    stream.get();    return stream; } ostream &operator << (ostream &stream, theStock &myStock) {    cout << "Stock Name: ";    stream << myStock.getstockName();    cout << endl << "Stock ID: ";    stream << myStock.getstockID();    cout << endl << "Stock Price: ";    stream << myStock.getstockPrice()<< endl;    return stream; } void clearscreen(); void main() {     clearscreen();     theStock myStock,              yourStock;     ifstream inFile("stock.txt");     inFile >> myStock;     cout << endl << endl << "My stock is the following: "          << endl;      cout << myStock;      cout << endl << endl;      inFile >> yourStock;     cout << endl << endl << "Your stock is the following: "          << endl;     cout << yourStock;     char resp;     cout << endl << endl << "Continue? (Y/N)";     cin >> resp;     clearscreen(); } void clearscreen() {  for(short index=1;index<=250;++index)       cout << endl; } // program_id           stock4.cpp // author               don voils // date written         2/20/2006 // // program description     This program demonstrates input and output //                         by overloading << and >> where both operators //                         are used by cout and the << operator //                         is connected to an external text file. // #include<fstream> #include<iostream> #include<string> using namespace std; class theStock {  private:      string stockName;      string stockID;      float stockPrice;  public:             void setstockName(string theName)     {            stockName=theName;     }             void setstockID(string theID)     {            stockID=theID;     }     void setstockPrice(float thePrice)     {          stockPrice=thePrice;     }     string getstockName()     {          return stockName;     }     string getstockID()     {          return stockID;     }     float getstockPrice()     {          return stockPrice;     }           friend istream &operator >> (istream &stream, theStock &myStock);           friend ostream &operator << (ostream &stream, theStock &myStock); }; istream &operator >> (istream &stream, theStock &myStock) {     cout << "What is the stock name? ";     getline(stream,myStock.stockName);     cout << "What is the stock ID? ";     stream >> myStock.stockID;     cout << "What is the stock price? ";     stream >> myStock.stockPrice;     cin.get();     return stream; } ostream &operator << (ostream &stream, theStock &myStock) {    stream << myStock.getstockName() << endl;    stream << myStock.getstockID() << endl;    stream << myStock.getstockPrice()<< endl;    return stream; } void clearscreen(); void main() {      clearscreen();            theStock myStock,            yourStock;      ofstream outFile("outStock.txt");            cin >> myStock;      cout << endl << endl << "My stock is the following: "                << endl;      cout << myStock;      outFile << myStock;      cout << endl << endl;      cin >> yourStock;      cout << endl << endl << "Your stock is the following: "                 << endl;            cout << yourStock;      outFile << yourStock;      char resp;      cout << endl << endl << "Continue? (Y/N)";      cin >> resp;      clearscreen(); } void clearscreen() {  for(short index=1;index<=250;++index)       cout << endl; } This is my Stock 5344 534.34 This is your Stock 5212 414.34 // program_id      testrationals.cpp // written_by      don voils // date_written   9/20/2006 // description    This program tests the class rationals. // #include<iostream> using namespace std; #include"rationals.h" void main() {      Rationals theFirst,                       theSecond,                       theThird;      bool notCorrect;      do      {           cout << "What is the first rational number? ";           cin >> theFirst;           if(theFirst.getBottom() == 0)           {                 notCorrect = true;                 cout << endl << endl << "The bottom must be non-zero!!!"                                        << endl << endl;           }           else                 notCorrect = false;      }while(notCorrect);      do      {          cout << "What is the second rational number? ";          cin >> theSecond;          if((theSecond.getTop() == 0) || (theSecond.getBottom() == 0))          {                notCorrect = true;                cout << endl << endl << "The top and the bottom must be non-zero!!!"                                       << endl << endl;          }          else                notCorrect = false;      }while(notCorrect);      theThird = theFirst + theSecond;      cout << endl << theThird << " = " << theFirst << " + " << theSecond                << endl << endl;      theThird = theFirst - theSecond;      cout << theThird << " = " << theFirst << " - " << theSecond                << endl << endl;      theThird = theFirst * theSecond;      cout << theThird << " = " << theFirst << " * " << theSecond                << endl << endl;      theThird = theFirst / theSecond;      cout << theThird << " = " << theFirst << " / " << theSecond                << endl << endl;      if(theFirst < theSecond)            cout << theFirst << " is less than " << theSecond                              << endl << endl;      else                 cout << theFirst << " is greater than or equal to " << theSecond                            << endl << endl;      if(theFirst <= theSecond)            cout << theFirst << " is less than or equal to " << theSecond                             << endl << endl;      else                       cout << theFirst << " is greater than " << theSecond << endl << endl;      if(theFirst > theSecond)         cout << theFirst << " is greater than " << theSecond                    << endl << endl;      else         cout << theFirst << " is less than or equal to " << theSecond                    << endl << endl;      if(theFirst >= theSecond)         cout << theFirst << " is greater than or equal to " << theSecond                    << endl << endl;      else         cout << theFirst << " is less than " << theSecond << endl << endl;      if(theFirst == theSecond)         cout << theFirst << " is equal to " << theSecond << endl << endl;      else         cout << theFirst << " is not equal to " << theSecond << endl << endl;      char resp;      cout << endl << endl << "Continue? ";      cin >> resp; } ` 