---+++ Files ---+++ Simple File Input/Output <sticky> %CODE{"c++"}% //DISPLAY 6.1 Simple File Input/Output //Reads three numbers from the file infile.dat, sums the numbers, //and writes the sum to the file outfile.dat. //(A better version of this program will be given in Display 6.2.) #include <fstream> int main( ) { using namespace std; ifstream in_stream; ofstream out_stream; in_stream.open("infile.dat"); out_stream.open("outfile.dat"); int first, second, third; in_stream >> first >> second >> third; out_stream << "The sum of the first 3\n" << "numbers in infile.dat\n" << "is " << (first + second + third) << endl; in_stream.close( ); out_stream.close( ); return 0; } %ENDCODE%</sticky> * [[%ATTACHURL%/infile.dat][infile.dat]]: infile.dat ---+++ File I/O with Checks on open <sticky> %CODE{"c++"}% //DISPLAY 6.2 File I/O with Checks on open //Reads three numbers from the file infile.dat, sums the numbers, //and writes the sum to the file outfile.dat. #include <fstream> #include <iostream> #include <cstdlib> int main( ) { using namespace std; ifstream in_stream; ofstream out_stream; in_stream.open("infile.dat"); if (in_stream.fail( )) { cout << "Input file opening failed.\n"; exit(1); } out_stream.open("outfile.dat"); if (out_stream.fail( )) { cout << "Output file opening failed.\n"; exit(1); } int first, second, third; in_stream >> first >> second >> third; out_stream << "The sum of the first 3\n" << "numbers in infile.dat\n" << "is " << (first + second + third) << endl; in_stream.close( ); out_stream.close( ); return 0; } %ENDCODE%</sticky> ---+++ Appending to a File <sticky> %CODE{"c++"}% //DISPLAY 6.3 Appending to a File //Appends data to the end of the file data.txt. #include <fstream> #include <iostream> int main( ) { using namespace std; cout << "Opening data.txt for appending.\n"; ofstream fout; fout.open("data.txt", ios::app); if (fout.fail( )) { cout << "Input file opening failed.\n"; exit(1); } fout << "5 6 pick up sticks.\n" << "7 8 ain't C++ great!\n"; fout.close( ); cout << "End of appending to file.\n"; return 0; } %ENDCODE%</sticky> * [[%ATTACHURL%/data.txt][data.txt]]: data.txt ---+++ Inputting a File Name <sticky> %CODE{"c++"}% //DISPLAY 6.4 Inputting a File Name //Reads three numbers from the file specified by the user, sums the numbers, //and writes the sum to another file specified by the user. #include <fstream> #include <iostream> #include <cstdlib> int main( ) { using namespace std; char in_file_name[16], out_file_name[16]; ifstream in_stream; ofstream out_stream; cout << "I will sum three numbers taken from an input\n" << "file and write the sum to an output file.\n"; cout << "Enter the input file name (maximum of 15 characters):\n"; cin >> in_file_name; cout << "Enter the output file name (maximum of 15 characters):\n"; cin >> out_file_name; cout << "I will read numbers from the file " << in_file_name << " and\n" << "place the sum in the file " << out_file_name << endl; in_stream.open(in_file_name); if (in_stream.fail( )) { cout << "Input file opening failed.\n"; exit(1); } out_stream.open(out_file_name); if (out_stream.fail( )) { cout << "Output file opening failed.\n"; exit(1); } int first, second, third; in_stream >> first >> second >> third; out_stream << "The sum of the first 3\n" << "numbers in " << in_file_name << endl << "is " << (first + second + third) << endl; in_stream.close( ); out_stream.close( ); cout << "End of Program.\n"; return 0; } %ENDCODE%</sticky> * [[%ATTACHURL%/numbers.dat][numbers.dat]]: numbers.dat ---+++ Formatting Output <sticky> %CODE{"c++"}% //DISPLAY 6.6 Formatting Output //Illustrates output formatting instructions. //Reads all the numbers in the file rawdata.dat and writes the numbers //to the screen and to the file neat.dat in a neatly formatted way. #include <iostream> #include <fstream> #include <cstdlib> #include <iomanip> using namespace std; void make_neat(ifstream& messy_file, ofstream& neat_file, int number_after_decimalpoint, int field_width); //Precondition: The streams messy_file and neat_file have been connected //to files using the function open. //Postcondition: The numbers in the file connected to messy_file have been //written to the screen and to the file connected to the stream neat_file. //The numbers are written one per line, in fixed-point notation (that is, not in //e-notation), with number_after_decimalpoint digits after the decimal point; //each number is preceded by a plus or minus sign and each number is in a field //of width field_width. (This function does not close the file.) int main( ) { ifstream fin; ofstream fout; fin.open("rawdata.dat"); if (fin.fail( )) { cout << "Input file opening failed.\n"; exit(1); } fout.open("neat.dat"); if (fout.fail( )) { cout << "Output file opening failed.\n"; exit(1); } make_neat(fin, fout, 5, 12); fin.close( ); fout.close( ); cout << "End of program.\n"; return 0; } //Uses iostream, fstream, and iomanip: void make_neat(ifstream& messy_file, ofstream& neat_file, int number_after_decimalpoint, int field_width) { neat_file.setf(ios::fixed); neat_file.setf(ios::showpoint); neat_file.setf(ios::showpos); neat_file.precision(number_after_decimalpoint); cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.setf(ios::showpos); cout.precision(number_after_decimalpoint); double next; while (messy_file >> next) { cout << setw(field_width) << next << endl; neat_file << setw(field_width) << next << endl; } } %ENDCODE%</sticky> * [[%ATTACHURL%/rawdata.dat][rawdata.dat]]: rawdata.dat ---+++ Checking Input <sticky> %CODE{"c++"}% //DISPLAY 6.7 Checking Input //Program to demonstrate the functions new_line and get_input. #include <iostream> using namespace std; void new_line( ); //Discards all the input remaining on the current input line. //Also discards the '\n' at the end of the line. //This version works only for input from the keyboard. void get_int(int& number); //Postcondition: The variable number has been //given a value that the user approves of. int main( ) { int n; get_int(n); cout << "Final value read in = " << n << endl << "End of demonstration.\n"; return 0; } //Uses iostream: void new_line( ) { char symbol; do { cin.get(symbol); } while (symbol != '\n'); } //Uses iostream: void get_int(int& number) { char ans; do { cout << "Enter input number: "; cin >> number; cout << "You entered " << number << " Is that correct? (yes/no): "; cin >> ans; new_line( ); } while ((ans != 'Y') && (ans != 'y')); } %ENDCODE%</sticky> ---+++ Editing a File of Text <sticky> %CODE{"c++"}% //DISPLAY 6.8 Editing a File of Text //Program to create a file called cplusad.dat that is identical to the file //cad.dat, except that all occurrences of 'C' are replaced by "C++". //Assumes that the uppercase letter 'C' does not occur in cad.dat except //as the name of the C programming language. #include <fstream> #include <iostream> #include <cstdlib> using namespace std; void add_plus_plus(ifstream& in_stream, ofstream& out_stream); //Precondition: in_stream has been connected to an input file with open. //out_stream has been connected to an output file with open. //Postcondition: The contents of the file connected to in_stream have been //copied into the file connected to out_stream, but with each 'C' replaced //by "C++". (The files are not closed by this function.) int main( ) { ifstream fin; ofstream fout; cout << "Begin editing files.\n"; fin.open("cad.dat"); if (fin.fail( )) { cout << "Input file opening failed.\n"; exit(1); } fout.open("cplusad.dat"); if (fout.fail( )) { cout << "Output file opening failed.\n"; exit(1); } add_plus_plus(fin, fout); fin.close( ); fout.close( ); cout << "End of editing files.\n"; return 0; } void add_plus_plus(ifstream& in_stream, ofstream& out_stream) { char next; in_stream.get(next); while (! in_stream.eof( )) { if (next == 'C') out_stream << "C++"; else out_stream << next; in_stream.get(next); } } %ENDCODE%</sticky> ---+++ File Example reverse lines <sticky> %CODE{"c++"}% #include <fstream> #include <iostream> #include <cstdlib> #include <vector> int main( ) { using namespace std; ifstream in_stream; ofstream out_stream; in_stream.open("infile.dat"); if (in_stream.fail( )) { cout << "Input file opening failed.\n"; exit(1); } out_stream.open("outfile.dat"); if (out_stream.fail( )) { cout << "Output file opening failed.\n"; exit(1); } vector<string> strings; string s; getline(in_stream,s); while (!in_stream.eof()) { strings.push_back(s); getline(in_stream,s); } for (int k = strings.size()-1 ; k >= 0 ; k-- ) { out_stream << strings.at(k) << endl; } in_stream.close( ); out_stream.close( ); return 0; } %ENDCODE%</sticky> ---+++ Classes ---+++ Equality Function <sticky> %CODE{"c++"}% //DISPLAY 11.1 Equality Function //Program to demonstrate the function equal. #include <iostream> #include <cstdlib> using namespace std; class DayOfYear { public: DayOfYear(int the_month, int the_day); //Precondition: the_month and the_day form a //possible date. Initializes the date according //to the arguments. DayOfYear( ); //Initializes the date to January first. void input( ); void output( ); int get_month( ); //Returns the month, 1 for January, 2 for February, etc. int get_day( ); //Returns the day of the month. private: void check_date( ); int month; int day; }; bool equal(DayOfYear date1, DayOfYear date2); //Precondition: date1 and date2 have values. //Returns true if date1 and date2 represent the same date; //otherwise, returns false. int main( ) { DayOfYear today, bach_birthday(3, 21); cout << "Enter today's date:\n"; today.input( ); cout << "Today's date is "; today.output( ); cout << "J. S. Bach's birthday is "; bach_birthday.output( ); if ( equal(today, bach_birthday)) cout << "Happy Birthday Johann Sebastian!\n"; else cout << "Happy Unbirthday Johann Sebastian!\n"; return 0; } bool equal(DayOfYear date1, DayOfYear date2) { return ( date1.get_month( ) == date2.get_month( ) && date1.get_day( ) == date2.get_day( ) ); } DayOfYear::DayOfYear() { month = 1; day = 1; } DayOfYear::DayOfYear(int the_month, int the_day) : month(the_month), day(the_day) { check_date(); } void DayOfYear::check_date( ) { if ((month < 1) || (month > 12) || (day < 1) || (day > 31)) { cout << "Illegal date. Aborting program.\n"; exit(1); } } int DayOfYear::get_month( ) { return month; } int DayOfYear::get_day( ) { return day; } //Uses iostream: void DayOfYear::input( ) { cout << "Enter the month as a number: "; cin >> month; cout << "Enter the day of the month: "; cin >> day; } //Uses iostream: void DayOfYear::output( ) { cout << "month = " << month << ", day = " << day << endl; } %ENDCODE%</sticky> ---+++ Money ClassVersion 1 <sticky> %CODE{"c++"}% //DISPLAY 11.3 Money ClassVersion 1 //Program to demonstrate the class Money. #include <iostream> #include <cstdlib> #include <cctype> using namespace std; //Class for amounts of money in U.S. currency. class Money { public: friend Money add(Money amount1, Money amount2); //Precondition: amount1 and amount2 have been given values. //Returns the sum of the values of amount1 and amount2. friend bool equal(Money amount1, Money amount2); //Precondition: amount1 and amount2 have been given values. //Returns true if the amount1 and amount2 have the same value; //otherwise, returns false. Money(long dollars, int cents); //Initializes the object so its value represents an amount with the //dollars and cents given by the arguments. If the amount is negative, //then both dollars and cents must be negative. Money(long dollars); //Initializes the object so its value represents $dollars.00. Money( ); //Initializes the object so its value represents $0.00. Money ClassVersion 1 double get_value( ); //Precondition: The calling object has been given a value. //Returns the amount of money recorded in the data of the calling object. void input(istream& ins); //Precondition: If ins is a file input stream, then ins has already been //connected to a file. An amount of money, including a dollar sign, has been //entered in the input stream ins. Notation for negative amounts is -$100.00. //Postcondition: The value of the calling object has been set to //the amount of money read from the input stream ins. void output(ostream& outs); //Precondition: If outs is a file output stream, then outs has already been //connected to a file. //Postcondition: A dollar sign and the amount of money recorded //in the calling object have been sent to the output stream outs. private: long all_cents; }; int digit_to_int(char c); //Function declaration for function used in the definition of Money::input: //Precondition: c is one of the digits '0' through '9'. //Returns the integer for the digit; for example, digit_to_int('3') returns 3. int main( ) { Money your_amount, my_amount(10, 9), our_amount; cout << "Enter an amount of money: "; your_amount.input(cin); cout << "Your amount is "; your_amount.output(cout); cout << endl; cout << "My amount is "; my_amount.output(cout); cout << endl; if (equal(your_amount, my_amount)) cout << "We have the same amounts.\n"; else cout << "One of us is richer.\n"; our_amount = add(your_amount, my_amount); your_amount.output(cout); cout << " + "; my_amount.output(cout); cout << " equals "; our_amount.output(cout); cout << endl; return 0; } Money add(Money amount1, Money amount2) { Money temp; temp.all_cents = amount1.all_cents + amount2.all_cents; return temp; } bool equal(Money amount1, Money amount2) { return (amount1.all_cents == amount2.all_cents); } Money::Money(long dollars, int cents) { if(dollars*cents < 0) //If one is negative and one is positive { cout << "Illegal values for dollars and cents.\n"; exit(1); } all_cents = dollars*100 + cents; } Money::Money(long dollars) : all_cents(dollars*100) { //Body intentionally blank. } Money::Money( ) : all_cents(0) { //Body intentionally blank. } double Money::get_value( ) { return (all_cents * 0.01); } //Uses iostream, cctype, cstdlib: void Money::input(istream& ins) { char one_char, decimal_point, digit1, digit2; //digits for the amount of cents long dollars; int cents; bool negative;//set to true if input is negative. ins >> one_char; if (one_char == '-') { negative = true; ins >> one_char; //read '$' } else negative = false; //if input is legal, then one_char == '$' ins >> dollars >> decimal_point >> digit1 >> digit2; if ( one_char != '$' || decimal_point != '.' || !isdigit(digit1) || !isdigit(digit2) ) { cout << "Error illegal form for money input\n"; exit(1); } cents = digit_to_int(digit1)*10 + digit_to_int(digit2); all_cents = dollars*100 + cents; if (negative) all_cents = -all_cents; } //Uses cstdlib and iostream: void Money::output(ostream& outs) { long positive_cents, dollars, cents; positive_cents = labs(all_cents); dollars = positive_cents/100; cents = positive_cents%100; if (all_cents < 0) outs << "-$" << dollars << '.'; else outs << "$" << dollars << '.'; if (cents < 10) outs << '0'; outs << cents; } int digit_to_int(char c) { return (static_cast<int>(c) - static_cast<int>('0') ); } %ENDCODE%</sticky> ---+++ The Class Money with Constant Parameters <sticky> %CODE{"c++"}% //DISPLAY 11.4 The Class Money with Constant Parameters //Class for amounts of money in U.S. currency. class Money { public: friend Money add(const Money& amount1, const Money& amount2); //Precondition: amount1 and amount2 have been given values. //Returns the sum of the values of amount1 and amount2. friend bool equal(const Money& amount1, const Money& amount2); //Precondition: amount1 and amount2 have been given values. //Returns true if amount1 and amount2 have the same value; //otherwise, returns false. Money(long dollars, int cents); //Initializes the object so its value represents an amount with the //dollars and cents given by the arguments. If the amount is negative, //then both dollars and cents must be negative. Money(long dollars); //Initializes the object so its value represents $dollars.00. Money( ); //Initializes the object so its value represents $0.00. double get_value( ) const; //Precondition: The calling object has been given a value. //Returns the amount of money recorded in the data of the calling object. void input(istream& ins); //Precondition: If ins is a file input stream, then ins has already been //connected to a file. An amount of money, including a dollar sign, has been //entered in the input stream ins. Notation for negative amounts is -$100.00. //Postcondition: The value of the calling object has been set to //the amount of money read from the input stream ins. void output(ostream& outs) const; //Precondition: If outs is a file output stream, then outs has already been //connected to a file. //Postcondition: A dollar sign and the amount of money recorded //in the calling object have been sent to the output stream outs. private: long all_cents; }; %ENDCODE%</sticky> ---+++ Overloading Operators <sticky> %CODE{"c++"}% //DISPLAY 11.5 Overloading Operators //Program to demonstrate the class Money. (This is an improved version of //the class Money that we gave in Display 11.3 and rewrote in Display 11.4.) #include <iostream> #include <cstdlib> #include <cctype> using namespace std; //Class for amounts of money in U.S. currency. class Money { public: friend Money operator +(const Money& amount1, const Money& amount2); //Precondition: amount1 and amount2 have been given values. //Returns the sum of the values of amount1 and amount2. friend bool operator ==(const Money& amount1, const Money& amount2); //Precondition: amount1 and amount2 have been given values. //Returns true if amount1 and amount2 have the same value; //otherwise, returns false. Money(long dollars, int cents); Money(long dollars); Money( ); double get_value( ) const; void input(istream& ins); void output(ostream& outs) const; private: long all_cents; }; int digit_to_int(char c); int main( ) { Money cost(1, 50), tax(0, 15), total; total = cost + tax; cout << "cost = "; cost.output(cout); cout << endl; cout << "tax = "; tax.output(cout); cout << endl; cout << "total bill = "; total.output(cout); cout << endl; if (cost == tax) cout << "Move to another state.\n"; else cout << "Things seem normal.\n"; return 0; } Money operator +(const Money& amount1, const Money& amount2) { Money temp; temp.all_cents = amount1.all_cents + amount2.all_cents; return temp; } bool operator ==(const Money& amount1, const Money& amount2) { return (amount1.all_cents == amount2.all_cents); } //The definitions of the member functions are the same as in //Display 11.3 except that const is added to the function headings //in various places so that the function headings match the function //declarations in the preceding class definition. No other changes //are needed in the member function definitions. The bodies of the //member function definitions are identical to those in Display 11.3. Money::Money(long dollars, int cents) { if(dollars*cents < 0) //If one is negative and one is positive { cout << "Illegal values for dollars and cents.\n"; exit(1); } all_cents = dollars*100 + cents; } Money::Money(long dollars) : all_cents(dollars*100) { //Body intentionally blank. } Money::Money( ) : all_cents(0) { //Body intentionally blank. } double Money::get_value( ) const { return (all_cents * 0.01); } //Uses iostream, cctype, cstdlib: void Money::input(istream& ins) { char one_char, decimal_point, digit1, digit2; //digits for the amount of cents long dollars; int cents; bool negative;//set to true if input is negative. ins >> one_char; if (one_char == '-') { negative = true; ins >> one_char; //read '$' } else negative = false; //if input is legal, then one_char == '$' ins >> dollars >> decimal_point >> digit1 >> digit2; if ( one_char != '$' || decimal_point != '.' || !isdigit(digit1) || !isdigit(digit2) ) { cout << "Error illegal form for money input\n"; exit(1); } cents = digit_to_int(digit1)*10 + digit_to_int(digit2); all_cents = dollars*100 + cents; if (negative) all_cents = -all_cents; } //Uses cstdlib and iostream: void Money::output(ostream& outs) const { long positive_cents, dollars, cents; positive_cents = labs(all_cents); dollars = positive_cents/100; cents = positive_cents%100; if (all_cents < 0) outs << "-$" << dollars << '.'; else outs << "$" << dollars << '.'; if (cents < 10) outs << '0'; outs << cents; } int digit_to_int(char c) { return (static_cast<int>(c) - static_cast<int>('0') ); } %ENDCODE%</sticky> ---+++ Overloading << and >> <sticky> %CODE{"c++"}% //DISPLAY 11.8 Overloading << and >> //Program to demonstrate the class Money. #include <iostream> #include <fstream> #include <cstdlib> #include <cctype> using namespace std; //Class for amounts of money in U.S. currency. class Money { public: friend Money operator +(const Money& amount1, const Money& amount2); friend Money operator -(const Money& amount1, const Money& amount2); friend Money operator -(const Money& amount); friend bool operator ==(const Money& amount1, const Money& amount2); friend bool operator < (const Money& amount1, const Money& amount2); //Returns true if amount1 is less than amount2; false otherwise. Money(long dollars, int cents); Money(long dollars); Money( ); double get_value( ) const; friend istream& operator >>(istream& ins, Money& amount); //Overloads the >> operator so it can be used to input values of type Money. //Notation for inputting negative amounts is as in -$100.00. //Precondition: If ins is a file input stream, then ins has already been //connected to a file. friend ostream& operator <<(ostream& outs, const Money& amount); //Overloads the << operator so it can be used to output values of type Money. //Precedes each output value of type Money with a dollar sign. //Precondition: If outs is a file output stream, //then outs has already been connected to a file. private: long all_cents; }; int digit_to_int(char c); //Used in the definition of the overloaded input operator >>. //Precondition: c is one of the digits '0' through '9'. //Returns the integer for the digit; for example, digit_to_int('3') returns 3. int main( ) { Money amount1, amount2; cout << "input first amount:"; cin >> amount1; cout << "input second amount:"; cin >> amount2; cout << "You entered " << amount1 << " and " << amount2 << endl; cout << "Negated " << -amount1 << " and " << -amount2 << endl; cout << "Sum " << amount1 + amount2 << endl; cout << "Difference " << amount1 - amount2 << endl; if (amount1 < amount2) { cout << amount1 << " < " << amount2; } else if (amount2 < amount1) { cout << amount1 << " > " << amount2; } else { cout << amount1 << " = " << amount2; } cout << endl; return 0; } Money operator +(const Money& amount1, const Money& amount2) { Money temp; temp.all_cents = amount1.all_cents + amount2.all_cents; return temp; } bool operator ==(const Money& amount1, const Money& amount2) { return (amount1.all_cents == amount2.all_cents); } Money operator -(const Money& amount1, const Money& amount2) { Money temp; temp.all_cents = amount1.all_cents - amount2.all_cents; return temp; } Money operator -(const Money& amount) { Money temp; temp.all_cents = -amount.all_cents; return temp; } bool operator < (const Money& amount1, const Money& amount2){ return amount1.all_cents < amount2.all_cents; } //Uses iostream, cctype, cstdlib: istream& operator >>(istream& ins, Money& amount) { char one_char, decimal_point, digit1, digit2; //digits for the amount of cents long dollars; int cents; bool negative;//set to true if input is negative. ins >> one_char; if (one_char == '-') { negative = true; ins >> one_char; //read '$' } else negative = false; //if input is legal, then one_char == '$' ins >> dollars >> decimal_point >> digit1 >> digit2; if ( one_char != '$' || decimal_point != '.' || !isdigit(digit1) || !isdigit(digit2) ) { cout << "Error illegal form for money input\n"; exit(1); } cents = digit_to_int(digit1)*10 + digit_to_int(digit2); amount.all_cents = dollars*100 + cents; if (negative) amount.all_cents = -amount.all_cents; return ins; } int digit_to_int(char c) { return ( static_cast<int>(c) - static_cast<int>('0') ); } //Uses cstdlib and iostream: ostream& operator <<(ostream& outs, const Money& amount) { long positive_cents, dollars, cents; positive_cents = labs(amount.all_cents); dollars = positive_cents/100; cents = positive_cents%100; if (amount.all_cents < 0) outs << "-$" << dollars << '.'; else outs << "$" << dollars << '.'; if (cents < 10) outs << '0'; outs << cents; return outs; } Money::Money(long dollars, int cents) { if(dollars*cents < 0) //If one is negative and one is positive { cout << "Illegal values for dollars and cents.\n"; exit(1); } all_cents = dollars*100 + cents; } Money::Money(long dollars) : all_cents(dollars*100) { //Body intentionally blank. } Money::Money( ) : all_cents(0) { //Body intentionally blank. } %ENDCODE%</sticky> ---+++ Program for a Class with an Array Member <sticky> %CODE{"c++"}% //DISPLAY 11.10 Program for a Class with an Array Member //This is the definition for a class TemperatureList. //Values of this type are lists of Fahrenheit temperatures. #include <iostream> #include <cstdlib> using namespace std; const int MAX_LIST_SIZE = 50; class TemperatureList { public: TemperatureList( ); //Initializes the object to an empty list. void add_temperature(double temperature); //Precondition: The list is not full. //Postcondition: The temperature has been added to the list. bool full( ) const; //Returns true if the list is full; false otherwise. friend ostream& operator <<(ostream& outs, const TemperatureList& the_object); //Overloads the << operator so it can be used to output values of //type TemperatureList. Temperatures are output one per line. //Precondition: If outs is a file output stream, then outs //has already been connected to a file. private: double list[MAX_LIST_SIZE]; //of temperatures in Fahrenheit int size; //number of array positions filled }; int main() { TemperatureList temps; cout << "Enter Temperatures, temperature less then -500.0 when done." << endl; double temp = 0; do { cout << "Next Temp: "; cin >> temp; if (temp > -500.0) { temps.add_temperature(temp); } } while (!temps.full() && temp > -500.0); cout << "You entered:" << temps; } //This is the implementation for the class TemperatureList. TemperatureList::TemperatureList( ) : size(0) { //Body intentionally empty. } void TemperatureList::add_temperature(double temperature) { //Uses iostream and cstdlib: if ( full( ) ) { cout << "Error: adding to a full list.\n"; exit(1); } else { list[size] = temperature; size = size + 1; } } bool TemperatureList::full( ) const { return (size == MAX_LIST_SIZE); } //Uses iostream: ostream& operator <<(ostream& outs, const TemperatureList& the_object) { for (int i = 0; i < the_object.size; i++) outs << the_object.list[i] << " F\n"; return outs; } %ENDCODE%</sticky> ---+++ <sticky> %CODE{"c++"}% %ENDCODE%</sticky> ---+++ <sticky> %CODE{"c++"}% %ENDCODE%</sticky>
E
dit
|
A
ttach
|
Watch
|
P
rint version
|
H
istory
: r2
<
r1
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r2 - 2017-04-25
-
JimSkon
Home
Site map
KatiWeb web
KenyonCpp web
MSSC web
Main web
SCMP118 web
Fall2016 web
SCMP391 web
Sandbox web
TWiki web
Fall2016 Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
Register User
E
dit
A
ttach
Copyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback