Named Constants
A
value that never changes is a constant.
Ex. P = ~3.14
Interest
rate = 6%
We
can represent these values with a named constant. The value of a named constant cannot be
changed during the execution of a program.
Syntax: const <datatype>
<constant name> = value;
Ex.
const float INTEREST = .06;
By
convention we capitalize the identifier for a named constant.
Ex.
Create a program that prompts the user for a dollar amount and outputs the
interest earned in a year when the interest rate is 6%. Use a named constant for the interest.
Step1: Basic analysis - Inputs: interest rate, dollar amount
Outputs:
amount of interest in one year
Extended: formula
amountint = dollaramt
* interest
Step2: 1. Use named constant for interest = 6%.
2. Prompt user for dollar amount.
3. Calculate interest
4. Print results
Step3:
Code the solution
#include <iostream>
using namespace std;
int
main()
{
const float
INTEREST = 0.06;
float amount;
float amountint;
cout
<< "Welcome to OUR NATIONAL BANK.
Our interest today is: "
<< INTEREST << endl;
cout
<< "Please enter a dollar amount:
$";
cin
>> amount;
amountint
= amount * INTEREST;
cout
<< endl << endl;
cout << "By saving with
us, in one year you will earn: $"
<< amountint <<endl;
return 0;
}
Welcome
to OUR NATIONAL BANK. Our interest today
is: 0.06
Please
enter a dollar amount: $23.75
By
saving with us, in one year you will earn: $1.425
Press
any key to continue
We do
not usually display dollar amounts to 3 decimal places.
Formatting
float numbers:
Default: Numbers are displayed in a field size that
will fit the number exactly. Floating
point numbers are displayed to a default of 6 places before the decimal. Any number with more than 6 places before the
decimal is displayed in exponential notation
Ex.
float num1;
num1
= 123456;
cout << num1 << endl;
//displays 123456
num1
= 1234567;
cout << num1 << endl; // displays 1.23457e+006
We
can use field width manipulators to format numbers printed by cout.
The
field width manipulators are found in iomanip.h. We must include this library in our programs.
Field
width manipulators:
1. setw(n) Places the number in a field width of n
spaces.
Ex.
int num2;
num2
= 1234;
cout << '|' << setw(7)
<< num2 << '|' << endl; //displays |
1234|
cout << '|' << setw(5)
<< num2
<< '|' << endl; //displays | 1234|
If
a field width is specified that is too small for the number, the number is
printed in a field that is large enough to hold that number.
cout << '|' << setw(2)
<< num2
<< '|' << endl; //displays |1234|
Numbers,
by default, are
right justified in the field width. (flush to right
margin)
setw is not persistent. It only operates on the next piece of data on
output stream. Therefore if you want
more than one output value placed in a specified field width, you must put setw in front of each.
2. setprecision(n) - Sets floating point precision to n
decimal places. For float numbers the precision indicates the number of digits
displayed.
float num1;
num1
= 1234567;
cout << setprecision(3) << num1 << endl; // 1.23e+006
The
minimum number of digits displayed is 1.
setprecision is persistent.
The
default precision is 6.
3. Other
ostream manipulators
showpoint - always displays the
number with a decimal point with a default precision of 6. If the integer portion needs more than 6
digits, the number is displayed in exponential format.
fixed - displays number always in fixed decimal format. When fixed flag is on, precision refers to
number of decimal places displayed.
scientific - displays in exponential format.
left - displays left justified in field
right - displays right justified in field.