Chapter 3_3 - Missouri State University

Download Report

Transcript Chapter 3_3 - Missouri State University

Chapter 3. Expressions
and Interactivity
CSC125 Introduction to C++
Formatting Output
 Ex.
Input 6 integers n1,n2,n3,n4,n5,n6 in
the range of [0,10000], and display them
on the screen as a table shown below:
n1
n2
n3
n4
n5
n6
 Cout
uses just the number of spaces
needed to print each number
Formatting output
 A stream


manipulator
setw(aNumber) : establish print fields of a
specified width.
aNumber is the field width for the value
immediately following it. Minimum number of
spaces to print the value in.
Formatting Output
 #include
<iomanip>
 Cout
goes back to its default method of
printing
 Any
number larger than the minimum will
cause cout to override the setw value.
Formatting Output
 The
field width of a floating-point number
includes a position for the decimal point
 The
field width of a string includes all
characters in the string, including spaces
 These
values printed in the field are rightjustified by default.
Formatting Output
 Right
justified.
double x=146.789, y=24.23,z=1.2;
cout<<setw(10)<<x<<endl;
cout<<setw(10)<<y<<endl;
cout<<setw(10)<<z<<endl;
 Left
justified.
double x=146.789, y=24.23,z=1.2;
cout<<left<<setw(10)<<x<<endl;
cout<<setw(10)<<y<<endl;
cout<<setw(10)<<z<<endl;
The setprecision(aNumber)
Manipulator
 Floating-point
values may be rounded to a
number of significant digits
 You
can control the number of significant
digits with which floating-point values are
displayed.
 Unlike
setw(), setprecision manipulator
remains in effect until it is changed to
some other values.
Fixed vs Scientific
 Stream
manipulator, fixed, forces cout to
print the digits in fixed-point notation.
float f1=3.2472, f2=12.9e3;
double d=327.815;
cout<<fixed<<f1<<endl<<f2<<endl;
cout<<scientific<<d<<endl<<f2<<endl;
cout<<setprecison(2);
cout<<fixed<<f1<<endl<<f2<<endl;
cout<<scientific<<d<<endl<<f2<<endl;
Fixed vs Scientific
 setprecision(x):
when used with
fixed or scientific, print floatingpoint value using x digits after the decimal.
Without fixed or scientific, print
floating-point value using x significant
digits
showpoint
 By
default, floating-point numbers are not
displayed with trailing zeroes
 Six
significant digits are specified.
 showpoint
manipulator
Happy Moon Festival
Formatted Input
format field width for use with cin
 Useful when reading string data to be
stored in a character array:
 Can
const int SIZE = 5;
char fName[SIZE];
cout << "Enter your name: ";
cin >> setw(SIZE) >> fName;

cin reads one less character than
specified in setw() directive
Procedural and Object-Oriented
Programming
 Procedural
programming: focus is on the
process. Procedures/functions are written
to process data.
 Object-Oriented
programming: focus is on
objects, which contain data and the means
to manipulate the data. Messages sent to
objects to perform operations.
cin.getline()
 To
read an entire line of input, use
cin.getline():
const int SIZE = 81;
char address[SIZE];
cout << "Enter your address: ";
cin.getline(address, SIZE);

cin.getline takes two arguments:


Name of array to store string
Size of the array
Reading a charcter
 To

read a single character:
Use cin:
char ch;
cout << “Press any key to continue";
cin >> ch;
Problem: will skip over blanks, tabs, <CR>

Use cin.get():
cin.get(ch);
Will read the next character entered, even
whitespace
Mixing cin >> and cin.get()
cin and cin.get() in the same
program can cause input errors that are
hard to detect
 Mixing
How to solve it?
 To
skip over unneeded characters that are
still in the keyboard buffer, use
cin.ignore():
cin.ignore(); // skip next char
cin.ignore(n, c); // skip the next
// n char. or until a
//character c is met.