Program | Demonstrates |
---|---|
cmlsasgn.cpp | Shows overloading of the assignment operators |
complex.cpp | Shows overloading of arithmetic binary operators |
date.cpp | Shows overloading of the extraction and the insertion operators |
dateoptr.cpp | Shows overloading of arithmetic binary operators |
datoptr2.cpp | Shows overloading of binary operators with friend |
datereln.cpp | Shows overloading of relations operators |
futrpas1.cpp | Shows nonmember overloading of unary operators with public access to member data |
futrpas2.cpp | Shows member overloading of unary operators |
futrpas3.cpp | Shows nonmember overloading of unary operators with private access to member data |
futrpas4.cpp | Shows overloading the increment and the decrement operator |
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 | Demonstrates the overloading of a relational operator. |
stock2.cpp | Demonstrates input and output by overloading << and >> |
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; }