18
ECE 264 Object-Oriented Software Development Instructor: Dr. Honggang Wang Spring 2013 Lecture 5: Continuing with output formatting

ECE 264 Object-Oriented Software Development

Embed Size (px)

DESCRIPTION

ECE 264 Object-Oriented Software Development. Instructor: Dr. Honggang Wang Spring 2013 Lecture 5: Continuing with output formatting. Lecture outline. Announcements/reminders Lab 2 (Wednesday session) due 02/08 (Friday) Lab 2 (Monday session) due on 02/13 (Wednesday) - PowerPoint PPT Presentation

Citation preview

Page 1: ECE 264 Object-Oriented Software Development

ECE 264Object-Oriented

Software Development

Instructor: Dr. Honggang WangSpring 2013

Lecture 5: Continuing with output formatting

Page 2: ECE 264 Object-Oriented Software Development

Lecture outline Announcements/reminders

Lab 2 (Wednesday session) due 02/08 (Friday) Lab 2 (Monday session) due on 02/13 (Wednesday)

Will submit to M:\ECE-264\<username> Review: output formatting

Changing precision Forcing decimal point to be displayed

Today Continue with output formatting

Changing field widths Changing justification within fields Changing fill characters

File I/O Writing Code Together (WCT session) NEW!!

04/19/23 ECE 264: Lecture 7 2

Page 3: ECE 264 Object-Oriented Software Development

Review Output formatting

Change base with dec/oct/hex or setbase() Change precision (# places after decimal point)

with precision() or setprecision() Be sure to specify fixed format!

Force decimal point to be shown with showpoint

04/19/23 ECE 264: Lecture 7 3

Page 4: ECE 264 Object-Oriented Software Development

Field Width (width, setw) Field width

(for ostream) Number of character positions in which value is outputted Fill characters are inserted as padding Values wider than the field are not truncated

(for istream) Maximum number of characters inputted For char array, maximum of one fewer characters than

the width will be read (to accommodate null character)

04/19/23 ECE 264: Lecture 7 4

Page 5: ECE 264 Object-Oriented Software Development

Field Width (width, setw) (Cont.)

Field width (Cont.) Member function width of base class ios_base

Sets the field width Returns the previous width

width function call with no arguments just returns the current setting

Parameterized stream manipulator setw Sets the field width

Field width settings are not sticky

04/19/23 ECE 264: Lecture 7 5

Page 6: ECE 264 Object-Oriented Software Development

Example 5: width// Fig. 15.10: Fig15_10.cpp: Demonstrating member function width.

#include <iostream>

using std::cin;

using std::cout;

using std::endl;

int main()

{

int widthValue = 4;

char sentence[ 10 ];

cout << "Enter a sentence:" << endl;

// set field width, then display characters based on that width

do {

cin.width( 5 ); // input only 5 characters from sentence

cin >> sentence;

cout.width( widthValue++ );

cout << sentence << endl;

} while (sentence[0] != ‘.’); // end while

return 0;

} // end main

04/19/23 ECE 264: Lecture 7 6

Page 7: ECE 264 Object-Oriented Software Development

Example 5 outputEnter a sentence:This is a test of the width member function.This is a test of the widt h memb er func tion .

04/19/23 ECE 264: Lecture 7 7

Page 8: ECE 264 Object-Oriented Software Development

Justification (left, right and internal) Justification in a field

Manipulator left fields are left-justified padding characters to the right

Manipulator right fields are right-justified padding characters to the left

Manipulator internal signs or bases on the left

showpos forces the plus sign to print showbase forces the base to print (for octal/hex)

magnitudes on the right padding characters in the middle

04/19/23 ECE 264: Lecture 7 8

Page 9: ECE 264 Object-Oriented Software Development

Example 6: right/left justification// Fig. 15.14: Fig15_14.cpp--Demonstrating left justification and right justification.#include <iostream>using std::cout;using std::endl;using std::left;using std::right;

#include <iomanip>using std::setw;

int main(){ int x = 12345;

// display x right justified (default) cout << "Default is right justified:" << endl << setw( 10 ) << x;

// use left manipulator to display x left justified cout << "\n\nUse std::left to left justify x:\n" << left << setw( 10 ) << x;

// use right manipulator to display x right justified cout << "\n\nUse std::right to right justify x:\n" << right << setw( 10 ) << x << endl; return 0;} // end main

04/19/23 ECE 264: Lecture 7 9

Page 10: ECE 264 Object-Oriented Software Development

Example 7: internal justification// Fig. 15.15: Fig15_15.cpp // Printing an integer with internal spacing and plus sign.#include <iostream>using std::cout;using std::endl;using std::internal;using std::showpos;

#include <iomanip>using std::setw;

int main(){ // display value with internal spacing and plus sign cout << internal << showpos << setw( 10 ) << 123 << endl; return 0;} // end main

04/19/23 ECE 264: Lecture 7 10

+ 123

Output:

Page 11: ECE 264 Object-Oriented Software Development

Padding (fill, setfill) Padding in a field

Fill characters are used to pad a field Member function fill

Specifies the fill character Spaces are used if no value is specified

Returns the prior fill character Stream manipulator setfill

Specifies the fill character

04/19/23 ECE 264: Lecture 7 11

Page 12: ECE 264 Object-Oriented Software Development

Example 8: setfill, setw// Fig. 15.16: Fig15_16.cpp // Using member-function fill and stream-manipulator

setfill to change// the padding character for fields larger than the

printed value.#include <iostream>using std::cout;using std::dec;using std::endl;using std::hex;using std::internal;using std::left;using std::right;using std::showbase;

#include <iomanip>using std::setfill;using std::setw;

04/19/23 ECE 264: Lecture 7 12

Page 13: ECE 264 Object-Oriented Software Development

Example 8: setfill, setw (cont.)int main(){ int x = 10000;

// display x cout << x << " printed as int right and left justified\n" << "and as hex with internal justification.\n" << "Using the default pad character (space):" << endl;

// display x with base cout << showbase << setw( 10 ) << x << endl;

// display x with left justification cout << left << setw( 10 ) << x << endl;

// display x as hex with internal justification cout << internal << setw( 10 ) << hex << x << endl << endl;

// display x using padded characters (right justification) cout << right; cout.fill( '*' ); cout << setw( 10 ) << dec << x << endl;

// display x using padded characters (left justification) cout << left << setw( 10 ) << setfill( '%' ) << x << endl;

// display x using padded characters (internal justification) cout << internal << setw( 10 ) << setfill( '^' ) << hex << x << endl; return 0;} // end main

04/19/23 ECE 264: Lecture 7 13

Page 14: ECE 264 Object-Oriented Software Development

Example: setfill, setw (output)

04/19/23 ECE 264: Lecture 7 14

Page 15: ECE 264 Object-Oriented Software Development

WCT (Writing Code Together) SessionWrite a program that converts integer Fahrenheit

temperatures from 0 to 212 degrees to floating-point Celsius temperatures with 3 digits of precision. Use the formula

celsius = 5.0 / 9.0 * ( fahrenheit - 32 );

to perform the calculation. The output should be printed in two right-justified columns and the Celsius temperature should be preceded by a sign for both positive and negative values

04/19/23 ECE 264: Lecture 7 15

Page 16: ECE 264 Object-Oriented Software Development

WCT Session Expected output

04/19/23 ECE 264: Lecture 7 16

Page 17: ECE 264 Object-Oriented Software Development

WCT Session

04/19/23 ECE 264: Lecture 7 17

Page 18: ECE 264 Object-Oriented Software Development

Final notes Next time

Introduce classes Acknowledgements: this lecture borrows

heavily from lecture slides provided with the following texts: Deitel & Deitel, C++ How to Program, 8th ed. Etter & Ingber, Engineering Problem Solving with

C++, 2nd ed.

04/19/23 ECE 264: Lecture 7 18