Chapter 3. Expressions and Interactivity
description
Transcript of Chapter 3. Expressions and Interactivity
1
Starting Out with C++, 3rd Edition
Chapter 3. Expressions and Interactivity
2
Starting Out with C++, 3rd Edition
3.1 The cin Object
• The cin object reads information types at the keyboard.
• cin is the standard input object• Notice the >> and << operators appear to
point in the direction information is flowing.
3
Starting Out with C++, 3rd Edition
Program 3-1#include <iostream.h>void main(void){
int length, width, area;cout <<"This program calculates the area of a rectangle.\n";cout <<"What is the length of the rectangle? ";cin>>length;cout <<"What is the width of the rectangle? ";cin>>width;area = length * width;cout <<"The area of the rectangle is " << area << ".\n";
}
4
Starting Out with C++, 3rd Edition
Program Output
This program calculates the area of a rectangle.
What is the length of the rectangle? 10 [Enter]
What is the width of the rectangle? 20 [Enter]
The area of the rectangle is 200.
5
Starting Out with C++, 3rd Edition
Program 3-2// This program reads the length and width of a rectangle. // It calculates the rectangle's area and displays // the value on the screen.#include <iostream.h>
void main(void){
int length, width, area;cin >> length;cin >> width;area = length * width;cout << "The area of the rectangle is " << area << endl;
}
6
Starting Out with C++, 3rd Edition
Entering Multiple Values
• The cin object may be used to gather multiple values at once.
7
Starting Out with C++, 3rd Edition
Program 3-3#include <iostream.h>
void main(void){
int length, width, area;cout <<"This program calculates the area of a rectangle.\n";cout <<"Enter the length and width of the rectangle separated by a space. \n";cin >> length>> width;area = length * width;cout <<"The area of the rectangle is " << area << endl;
}
8
Starting Out with C++, 3rd Edition
Program Output
This program calculates the area of a rectangle.
Enter the length and width of the rectangle separated by a space.
10 20 [Enter]The area of the rectangle is 200
9
Starting Out with C++, 3rd Edition
Program 3-4// This program demonstrates how cin can read multiple values// of different data types.#include <iostream.h>
void main(void){
int whole;float fractional;char letter;
cout << "Enter an integer, a float, and a character: ";cin >> whole >> fractional >> letter;cout << "whole: " << whole << endl;cout << "fractional: " << fractional << endl;cout << "letter: " << letter << endl;
}
10
Starting Out with C++, 3rd Edition
Program Output
Enter an integer, a float, and a character: 4 5.7 b [Enter]
whole: 4 fractional: 5.7 letter: b
11
Starting Out with C++, 3rd Edition
Reading Strings
• cin can read strings as well as numbers.• Strings are stored in character arrays.char Company[12];
12
Starting Out with C++, 3rd Edition
Program 3-5#include <iostream.h>#include<string>
void main(void){
string name;cout << "What is your name? ";cin >> name;cout << "Good morning " << name << endl;
}
13
Starting Out with C++, 3rd Edition
Program Output
What is your name? Charlie [Enter]Good morning Charlie
14
Starting Out with C++, 3rd Edition
Program 3-6// This program demonstrates how cin can read a// string into a character array
#include <iostream.h>
void main(void){
char name[21];
cout << "What is your name? ";cin >> name;cout << "Good morning " << name << endl;
}
15
Starting Out with C++, 3rd Edition
Program Output
What is your name? Charlie [Enter]Good morning Charlie
16
Starting Out with C++, 3rd Edition
Program 3-7// This program reads two strings into two character arrays.#include <iostream.h>
void main(void){
char first[16], last[16];cout << "Enter your first and last names and I will\n";cout << "reverse them.\n"; cin >> first >> last;cout << last << ", " << first << endl;
}
17
Starting Out with C++, 3rd Edition
Program Output
Enter your first and last names and I willreverse them.Johnny Jones [Enter]Jones, Johnny
18
Starting Out with C++, 3rd Edition
Notes on strings:
• If a character array is intended to hold strings, it must be at least one character larger than the largest string that will be stored in it.
• The cin object will let the user enter a string larger than the array can hold. If this happens, the string will overflow the array’s boundaries and destroy other information in memory.
• If you wish the user to enter a string that has spaces in it, you cannot use this input method.
19
Starting Out with C++, 3rd Edition
3.2 Focus on Software Engineering: Mathematical Expressions
• C++ allows you to construct complex mathematical expressions using multiple operators and grouping symbols.
20
Starting Out with C++, 3rd Edition
Program 3-7// This program reads two strings into two character
arrays#include <iostream.h>
void main(void){
char first[16], last[16];
cout << Enter your first and last names and I will\n";cout << "reverse them.\n";cin >> first >> last;cout << last << ", " << first << endl;
}
21
Starting Out with C++, 3rd Edition
Program 3-7 Output with Example Input
Enter your first and last names and I will reverse them.Johnny Jones [Enter]Jones, Johnny
22
Starting Out with C++, 3rd Edition
Program 3-8// This program asks the user to enter the numerator// and denominator of a fraction and it displays the// decimal value#include <iostream.h>
void main(void){
float numerator, denominator;
cout << "This program shows the decimal value of ";cout << "a fraction.\n";
cout << “Enter the numerator: “;cin >> numerator;cout << “Enter the denominator: “;cin >> denominator;
cout << “The decimal value is “; cout << (numerator / denominator);}
23
Starting Out with C++, 3rd Edition
Program Output for Program 3-8 with Example Input
This program shows the decimal value of a fraction.
Enter the numerator: 3 [Enter]Enter the denominator: 6 [Enter]The decimal value is 0.1875
24
Starting Out with C++, 3rd Edition
Table 3-1 Precedence of Arithmetic Operators (Highest to Lowest)
(unary negation) -* / %+ -
25
Starting Out with C++, 3rd Edition
Table 3-2 Some Expressions
Expression Value 5 + 2 * 4 13 10 / 2 - 3 2 8 + 12 * 2 - 4 28 4 + 17 % 2 - 1 4 6 - 3 * 2 + 7 - 1 6
26
Starting Out with C++, 3rd Edition
Associativity
• If two operators sharing an operand have the same precedence, they work according to their associativity, either right to left or left to right
27
Starting Out with C++, 3rd Edition
Table 3-3 Associativity of Arithmetic OperatorsOperator Associativity(unary negation) - Right to left* / % Left to right+ - Left to right
28
Starting Out with C++, 3rd Edition
Converting Algebraic Expressions to Programming Statements
AlgebraicExpression
Operation C++ Equivalent
6B 6 times B 6 * B(3)(12) 3 times 12 3 * 124xy 4 times x times y 4 * x * y
29
Starting Out with C++, 3rd Edition
No Exponents Please!
• C++ does not have an exponent operator.• Use the pow() library function to raise a
number to a power.• Will need #include <math.h> for pow()
function.area = pow(4,2) // will store 42 in area
30
Starting Out with C++, 3rd Edition
Program 3-9// This program calculates the area of a circle.// The formula for the area of a circle is Pi times// the radius squared. Pi is 3.14159.#include <iostream.h>#include <math.h> // needed for the pow function
void main(void){
double area, radius;cout << "This program calculates the area of a circle.\n";cout << "What is the radius of the circle? ";cin >> radius;area = 3.14159 * pow(radius,2);cout << "The area is " << area;
}
31
Starting Out with C++, 3rd Edition
Program 3-9 Output With Example Input
This program calculates the area of a circle.What is the radius of the circle? 10[Enter]The area is 314.159
32
Starting Out with C++, 3rd Edition
3.3 When you Mix Apples and Oranges: Type Coercion
• When an operator’s operands are of different data types, C++ will automatically convert them to the same data type.
33
Starting Out with C++, 3rd Edition
Type Coercion Rules:
• Rule 1: Chars, shorts, and unsigned shorts are automatically promoted to int.
• Rule 2: When an operator works with two values of different data types, the lower-ranking value is promoted to the type of the higher-ranking value.
• Rule 3: When the final value of an expression is assigned to a variable, it will be converted to the data type of the variable.
34
Starting Out with C++, 3rd Edition
3.4 Overflow and Underflow
• When a variable is assigned a value that is too large or too small in range for that variable’s data type, the variable overflows or underflows.
• Overflow - when a variable is assigned a number that is too large for its data type
• Underflow - when a variable is assigned a number that is too small for its data type
35
Starting Out with C++, 3rd Edition
Program 3-10// This program demonstrates integer underflow and// overflow#include <iostream.h>
void main(void){
short testVar = 32767;cout << testVar << endl;testVar = testVar + 1;cout << testVar << endl;testVar = testVar - 1;cout << testVar << endl;
}
36
Starting Out with C++, 3rd Edition
Program Output
32767-3276832767
37
Starting Out with C++, 3rd Edition
Program 3-11// This program can be used to see how your system// handles floating point overflow and underflow.
#include <iostream.h>
void main(void){
float test;test = 2.0e38 * 1000; // Should overflow testcout << test << endl;test = 2.0e-38 / 2.0e38;cout << test << endl;
}
38
Starting Out with C++, 3rd Edition
3.5 The Typecast Operator
• The typecast operator allows you to perform manual data type conversion.
Val = int(number); //If number is a floating //point variable, it will be //truncated to an integer and //stored in the variable Val
39
Starting Out with C++, 3rd Edition
Program 3-12#include <iostream.h>
void main(void){
int months, books;float perMonth;cout << "How many books do you plan to read? ";cin >> books;cout << "How many months will it take you to read them? ";cin >> months;perMonth = float(books) / months;cout << "That is " << perMonth << " books per month.\n";
}
40
Starting Out with C++, 3rd Edition
Program Output
How many books do you plan to read? 30 [Enter]
How many months will it take you to read them? 7 [Enter]
That is 4.285714 books per month.
41
Starting Out with C++, 3rd Edition
Typecast Warnings
• In Program 3-11, the following statement would still have resulted in integer division:
perMonth = float(books / months);
• Because the division is performed first and the result is cast to a float.
42
Starting Out with C++, 3rd Edition
Program 3-13// This program uses a typecast operator to print // a character from a number. #include <iostream.h>
void main(void){
int number = 65;cout << number << endl;cout << char(number) << endl;
}
43
Starting Out with C++, 3rd Edition
Program Output
65A
44
Starting Out with C++, 3rd Edition
3.6 The Power of Constants
• Constants may be given names that symbolically represent them in a program.
45
Starting Out with C++, 3rd Edition
Program 3-14// This program calculates the area of a circle.#include <iostream.h>#include <math.h>
void main(void){
const float pi = 3.14159;double area, radius;cout << "This program calculates the area of a circle.\n";cout << "What is the radius of the circle? ";cin >> radius;area = pi * pow(radius,2);cout << "The area is " << area;
}
46
Starting Out with C++, 3rd Edition
The #define Directive• The older C-style method of creating named
constants is with the #define directive, although it is preferable to use the const modifier.
#define PI 3.14159
• is roughly the same asconst float PI=3.14159;
47
Starting Out with C++, 3rd Edition
Program 3-15
#include <iostream.h>#include <math.h> // needed for pow function#define PI 3.14159
void main(void){
double area, radius;cout << "This program calculates the area of a circle.\n";cout << "What is the radius of the circle? ";cin >> radius;area = PI * pow(radius, 2);cout << "The area is " << area;
}
48
Starting Out with C++, 3rd Edition
3.7 Multiple Assignment and Combined Assignment
• Multiple assignment means to assign the same value to several variables with one statement.
A = B = C = D = 12;Store1 = Store2 = Store3 = BegInv;
49
Starting Out with C++, 3rd Edition
Program 3-16// The program tracks the inventory of three widget stores// that opened at the same time. Each store started with the// same number of widgets in inventory. By subtracting the// number of widgets each store has sold from its inventory,// the current inventory can be calculated.
#include <iostream.h>
void main(void){
int begInv, sold, store1, store2, store3;
cout << “One week ago, 3 new widget stores opened\n";cout << “at the same time with the same beginning\n";cout << “inventory. What was the beginning inventory? ";cin >> begInv;store1 = store2 = store3 = begInv;
50
Starting Out with C++, 3rd Edition
Program 3-16 Continued
cout << "How many widgets has store 1 sold? ";cin >> sold;store1 = store1 – sold; //Subtract sold from store1
cout << "How many widgets has store 2 sold? ";cin >> sold;store2 = store2 – sold; //Subtract sold from store2cout << "How many widgets has store 3 sold? ";cin >> sold;store3 = store3 – sold; //Subtract sold from store 3cout << "Store1: " << store1 << endl;cout << "Store2: " << store2 << endl;cout << "Store3: " << store3 << endl;
}
51
Starting Out with C++, 3rd Edition
Program 3-16 Output with Example InputOne week ago, 3 new widget stores openedat the same time with the same beginninginventory. What was the beginning inventory?
100 [Enter]How many widgets has store 1 sold? 25 [Enter]How many widgets has store 2 sold? 15 [Enter]How many widgets has store 3 sold? 45 [Enter]
The current inventory of each store:
Store 1: 75Store 2: 85Store 3: 55
52
Starting Out with C++, 3rd Edition
Table 3-8
Statement What It Does Value of xafter theStatement
x = x + 4 ; Adds 4 to x 10
x = x - 3 ; Subtracts 3 from x 3
x = x * 1 0 ; Multiplies x by 10 60
x = x / 2 ; Divides x by 2 3
x = x % 4 Makes x the remainder of x / 4 2
53
Starting Out with C++, 3rd Edition
Table 3-9
Operator Example Usage Equivalent To+= x += 5; x = x + 5;-= y -= 2; y = y - 2;*= z += 10; z = z + 10;/= a /= b; a = a / b;
%= c %= 3; c = c % 3;
54
Starting Out with C++, 3rd Edition
Program 3-17// The program tracks the inventory of three widget stores// that opened at the same time. Each store started with the// same number of widgets in inventory. By subtracting the// number of widgets each store has sold from its inventory,// the current inventory can be calculated.
#include <iostream.h>
void main(void){
int begInv, sold, store1, store2, store3;
cout << “One week ago, 3 new widget stores opened\n";cout << “at the same time with the same beginning\n";cout << “inventory. What was the beginning inventory? ";cin >> begInv;store1 = store2 = store3 = begInv;
55
Starting Out with C++, 3rd Edition
Program 3-17 Continued
cout << "How many widgets has store 1 sold? ";cin >> sold;store1 -= sold; //Subtract sold from store1
cout << "How many widgets has store 2 sold? ";cin >> sold;store2 -= sold; //Subtract sold from store2cout << "How many widgets has store 3 sold? ";cin >> sold;store3 -= sold; //Subtract sold from store 3cout << "Store1: " << store1 << endl;cout << "Store2: " << store2 << endl;cout << "Store3: " << store3 << endl;
}
56
Starting Out with C++, 3rd Edition
Program 3-17 Output with Example InputOne week ago, 3 new widget stores openedat the same time with the same beginninginventory. What was the beginning inventory?
100 [Enter]How many widgets has store 1 sold? 25 [Enter]How many widgets has store 2 sold? 15 [Enter]How many widgets has store 3 sold? 45 [Enter]
The current inventory of each store:
Store 1: 75Store 2: 85Store 3: 55
57
Starting Out with C++, 3rd Edition
3.8 Formatting Output
• The cout object provides ways to format data as it is being displayed. This affects the way data appears on the screen.
58
Starting Out with C++, 3rd Edition
Program 3-18#include<iostream.h>
void main(void){
int num1 = 2897, num2 = 5,num3 = 837, num4 = 34, num5 = 7, num6 = 1623, num7 = 390, num8 = 3456, num9 = 12;
// Display the first row of numberscout << num1 << " "; cout << num2 << " "; cout << num3 << endl;// Display the second row of numberscout << num4 << " "; cout << num5 << " "; cout << num6 << endl;// Display the third row of numberscout << num7 << " ";cout << num8 << " "; cout << num9 << endl;
}
59
Starting Out with C++, 3rd Edition
Program Output
2897 5 83734 7 1623390 3456 12
60
Starting Out with C++, 3rd Edition
Program 3-19// This program displays three rows of numbers. #include <iostream.h>#include <iomanip.h> // for setw function
void main(void){
int num1 = 2897, num2 = 5, num3 = 837, num4 = 34, num5 = 7, num6 = 1623, num7 = 390, num8 = 3456, num9 = 12;
// Display the first row of numberscout << setw(4) << num1 << " ";cout << setw(4) << num2 << " ";cout << setw(4) << num3 << endl;
61
Starting Out with C++, 3rd Edition
Program continues
// Display the second row of numberscout << setw(4) << num4 << " ";cout << setw(4) << num5 << " ";cout << setw(4) << num6 << endl;// Display the third row of numberscout << setw(4) << num7 << " ";cout << setw(4) << num8 << " ";cout << setw(4) << num9 << endl;
}
62
Starting Out with C++, 3rd Edition
Program Output
2897 5 837 34 7 1623 390 3456 12
63
Starting Out with C++, 3rd Edition
Program 3-20//This program demonstrates the setw manipulator being//used with values of various data types.#include <iostream.h>#include <iomanip.h>
void main(void){
int intValue = 3928;float floatValue = 91.5;char cStringValue[] = "John J. Smith";cout << "(" << setw(5) << intValue << ")" << endl;cout << "(" << setw(8) << floatValue << ")" << endl;cout << "(" << setw(16) << cStringValue << ")" << endl;
}
64
Starting Out with C++, 3rd Edition
Program Output
( 3928)( 91.5)( John J. Smith)
65
Starting Out with C++, 3rd Edition
Precision
• Floating point values may be rounded to a number of significant digits, or precision, which is the total number of digits that appear before and after the decimal point.
66
Starting Out with C++, 3rd Edition
Program 3-21// This program demonstrates how setprecision rounds a// floating point value#include <iostream.h>#include <iomanip.h>
void main(void){
float quotient, number1 = 132.364, number2 = 26.91;
quotient = number1 / number2;cout << quotient << endl;cout << setprecision(5) << quotient << endl;cout << setprecision(4) << quotient << endl;cout << setprecision(3) << quotient << endl;cout << setprecision(2) << quotient << endl;cout << setprecision(1) << quotient << endl;
}
67
Starting Out with C++, 3rd Edition
Program Output
4.918774.91884.9194.924.95
68
Starting Out with C++, 3rd Edition
Table 3-11
Number Manipulator Value Displayed
28.92786 setprecision(3) 28.9
21 setprecision(5) 21
109.5 setprecision(4) 109.5
34.28596 setprecision(2) 34
69
Starting Out with C++, 3rd Edition
Program 3-22//This program asks for sales figures for 3 days.
The// total sales is calculated and displayed in a
table#include <iostream.h>#include <iomanip.h> void main(void){
float day1, day2, day3, total;
cout << "Enter the sales for day 1: ";cin >> day1;cout << "Enter the sales for day 2: ";cin >> day2;
70
Starting Out with C++, 3rd Edition
Program Continues
cout << "Enter the sales for day 3: ";cin >> day3;total = day1 + day2 + day3;cout << "\nSales Figures\n";cout << "-------------\n";cout << setprecision(5);cout << “Day 1: " << setw(8) << day1 << endl;cout << “Day 2: " << setw(8) << day2 << endl;cout << “Day 3: " << setw(8) << day3 << endl;
cout << “Total: " << setw(8) << total << endl;}
71
Starting Out with C++, 3rd Edition
Program Output
Enter the sales for day 1: 321.57 [Enter]Enter the sales for day 2: 269.62 [Enter]Enter the sales for day 3: 307.77 [Enter] Sales Figures-------------Day 1: 321.57Day 2: 269.62Day 3: 307.77Total: 898.96
72
Starting Out with C++, 3rd Edition
Program 3-23//This program asks for sales figures for 3 days. The // total sales is calculated and displayed in a table.#include <iostream.h>#include <iomanip.h>
void main(void){
float day1, day2, day3, total;cout << "Enter the sales for day 1: ";cin >> day1;cout << "Enter the sales for day 2: ";cin >> day2;cout << "Enter the sales for day 3: ";cin >> day3;total = day1 + day2 + day3;
73
Starting Out with C++, 3rd Edition
Program Continues
cout << "\nSales Figures\n";cout << "------\n";cout << setprecision(2) << setiosflags(ios::fixed);cout << “Day 1: " << setw(8) << day1 << endl;cout << “Day 2: " << setw(8) << day2 << endl;cout << “Day 3: " << setw(8) << day3 << endl;cout << "Total: " << setw(8) << total << endl;
}
74
Starting Out with C++, 3rd Edition
Program Output
Enter the sales for day 1: 1321.87 [Enter]Enter the sales for day 2: 1869.26 [Enter]Enter the sales for day 3: 1403.77 [Enter]
Sales Figures-------------Day 1: 1321.87Day 2: 1869.26Day 3: 1403.77Total: 4594.9
75
Starting Out with C++, 3rd Edition
IOS Flags
• setiosflags manipulator can be used to format output in a variety of ways, depending on which flag is specified.
• setiosflags(ios::fixed) will cause all subsequent numbers to be printed in fixed point notation
76
Starting Out with C++, 3rd Edition
Program 3-24// This program asks for sales figures for 3 days. The // total sales is calculated and displayed in a table. #include <iostream.h>#include <iomanip.h>
void main(void){
float day1, day2, day3, total;cout << "Enter the sales for day 1: ";cin >> day1;cout << "Enter the sales for day 2: ";cin >> day2;
77
Starting Out with C++, 3rd Edition
Program continues
cout << "Enter the sales for day 3: ";cin >> day3;total = day1 + day2 + day3;cout << "\nSales Figures\n";cout << "-------------\n";cout << setprecision(2)
<< setiosflags(ios::fixed | ios::showpoint);cout << “Day 1: " << setw(8) << day1 << endl;cout << “Day 2: " << setw(8) << day2 << endl;cout << “Day 3: " << setw(8) << day3 << endl;cout << "Total: " << setw(8) << total << endl;
}
78
Starting Out with C++, 3rd Edition
Program Output
Enter the sales for day 1: 2642.00 [Enter]Enter the sales for day 2: 1837.20 [Enter]Enter the sales for day 3: 1963.00 [Enter] Sales Figures-------------Day 1: 2642.00Day 2: 1837.20Day 3: 1963.00Total: 6442.20
79
Starting Out with C++, 3rd Edition
Table 3-12Format Flag Descriptionios::left Causes the field to be left-justified with padding spaces printed to
the right.ios::right Causes the field to be right-justified with padding spaces printed to
the left.ios::fixed Causes all subsequent numbers to be displayed in fixed point
notation.ios::scientific Causes all subsequent numbers to be displayed in scientific notation.ios::dec Causes all subsequent integers to be displayed in decimal format.
ios::hex Causes all subsequent integers to be displayed in hexadecimalformat.
ios::oct Causes all subsequent integers to be displayed in octal format.ios::showpoint Forces the decimal point and trailing zeroes to be displayed.ios::showpos Causes a + sign to be displayed in front of positive numbers.ios::uppercase Causes the E in scientific notation numbers, and the X in
hexadecimal numbers to be displayed in uppercase.
80
Starting Out with C++, 3rd Edition
Formatting Output With Member Functionscout.width(5); //calls the width member // function, same as // setw(5)
cout.precision(2); //sets precision to // 2 significant // digits
// The next statement works like // setiosflags(ios::fixed)cout.setf(ios::fixed);
81
Starting Out with C++, 3rd Edition
Program 3-25// This program asks for sales figures for 3 days. The // total sales is calculated and displayed in a table. #include <iostream.h>#include <iomanip.h> void main(void){
float day1, day2, day3, total;
cout << "Enter the sales for day 1: ";cin >> day1;cout << "Enter the sales for day 2: ";cin >> day2;cout << "Enter the sales for day 3: ";cin >> day3;
82
Starting Out with C++, 3rd Edition
Program continues
total = day1 + day2 + day3; cout.precision(2); cout.setf(ios::fixed | ios::showpoint);
cout << "\nSales Figures\n";cout << "-------------\n";cout << “Day 1: ";cout.width(8);cout << day1 << endl;cout << “Day 2: ";cout.width(8);cout << day2 << endl;
83
Starting Out with C++, 3rd Edition
Program continues
cout << “Day 3: ";cout.width(8);cout << day3 << endl;cout << "Total: ";cout.width(8);cout << total << endl;
}
84
Starting Out with C++, 3rd Edition
Program Output
Enter the sales for day 1: 2642.00 [Enter]Enter the sales for day 2: 1837.20 [Enter]Enter the sales for day 3: 1963.00 [Enter] Sales Figures-------------Day 1: 2642.00Day 2: 1837.20Day 3: 1963.00Total: 6442.20
85
Starting Out with C++, 3rd Edition
Program 3-26// This program asks for sales figures for 3 days. The // total sales is calculated and displayed in a table.#include <iostream.h>#include <iomanip.h>
void main(void){
float day1, day2, day3, total;
cout << "Enter the sales for day 1: ";cin >> day1;cout << "Enter the sales for day 2: ";cin >> day2;cout << "Enter the sales for day 3: ";cin >> day3;
86
Starting Out with C++, 3rd Edition
Program continues
total = day1 + day2 + day3;cout.precision(2);cout.setf(ios::fixed | ios::showpoint);cout << "\nSales Figures\n";cout << "-------------\n";cout << “Day 1: " << setw(8) << day1 << endl;cout << “Day 2: " << setw(8) << day2 << endl;cout << “Day 3: " << setw(8) << day3 << endl;cout << "Total: " << setw(8) << total << endl;return 0;
}
87
Starting Out with C++, 3rd Edition
Program Output
Enter the sales for day 1: 2642.00 [Enter]Enter the sales for day 2: 1837.20 [Enter]Enter the sales for day 3: 1963.00 [Enter] Sales Figures-------------Day 1: 2642.00Day 2: 1837.20Day 3: 1963.00Total: 6442.20
88
Starting Out with C++, 3rd Edition
Table 3-13
Member Function Descriptioncout.width Sets the display field width.cout.precision Sets the precision of floating point numbers.cout.setf Sets the specified format flags.cout.unsetf Disables, or turns off, the specified format
flags.
89
Starting Out with C++, 3rd Edition
3.9 Formatted Input
• The cin object provides ways of controlling string and character input.
90
Starting Out with C++, 3rd Edition
Program 3-27//This program uses setw with the cin object. #include <iostream.h>#include <iomanip.h>
void main(void){ char word[5]; cout << "Enter a word: "; cin >> setw(5) >> word; cout << "You entered " << word << endl;}
91
Starting Out with C++, 3rd Edition
Program 3-28//This program uses cin's width member function. #include <iostream.h>#include <iomanip.h>
void main(void){ char word[5]; cout << "Enter a word: "; cin.width(5); cin >> word; cout << "You entered " << word << endl;}
92
Starting Out with C++, 3rd Edition
Program Output for Programs 3-27 and 3-28
Enter a word: Eureka [Enter]You entered Eure
93
Starting Out with C++, 3rd Edition
Important points about the way cin handles field widths:
• The field width only pertains to the very next item entered by the user.
• cin stops reading input when it encounters a whitespace character. Whitespace characters include the [Enter] key, space, and tab.
94
Starting Out with C++, 3rd Edition
Reading a “Line” of Input
cin.getline(line, 20);
95
Starting Out with C++, 3rd Edition
Program 3-29//This program demonstrates cin's getline member function.#include <iostream.h>#include <iomanip.h>
void main(void){
char sentence[81];
cout << "Enter a sentence: ";cin.getline(sentence, 81);cout << "You entered " << sentence << endl;
}
96
Starting Out with C++, 3rd Edition
Program Output
Enter a sentence: To be, or not to be, that is the question. [Enter]You entered To be, or not to be, that is the question.
97
Starting Out with C++, 3rd Edition
Program 3-30#include <iostream.h>
void main(void){
char ch;
cout << "Type a character and press Enter: ";cin >> ch;cout << "You entered " << ch << endl;
}
Program Output with Example InputType a character and press Enter: A [Enter] You entered A
98
Starting Out with C++, 3rd Edition
Program 3-31#include <iostream.h>
void main(void){
char ch;
cout << "This program has paused. Press enter to continue.";cin.get(ch);cout << "Thank you!" << endl;
}
Program OutputThis program has paused. Press Enter to continue.
[Enter]Thank you!
99
Starting Out with C++, 3rd Edition
Program 3-32#include <iostream.h>
void main(void){
char ch;
cout << "Type a character and press Enter: ";cin.get(ch);cout << "You entered " << ch << endl;cout << "Its ASCII code is " << int(ch) << endl;
}
100
Starting Out with C++, 3rd Edition
Program Output
Type a character and press Enter: [Enter] You entered Its ASCII code is 10
101
Starting Out with C++, 3rd Edition
Mixing cin >> and cin.get
• Mixing cin.get with cin >> can cause an annoying and hard-to-find problem.
• Pressing the [Enter] key after inputting a number will cause the newline character to be stored in the keyboard buffer. To avoid this, use cin.ignore.
• cin.ignore(20,’\n’); will skip the next 20 chars in the input buffer or until a newline is encountered, whichever comes first
• cin.ignore(); will skip the very next character in the input buffer
102
Starting Out with C++, 3rd Edition
3.10 Focus on Object-Oriented Programming:More About Object- Oriented Programming• A member function is a procedure, written in C++
code, that is part of an object. A member function causes the object it is a member of to perform an action
• In this chapter, we have used width, precision, setf, and unsetf for the cout object
• In this chapter we have used width, getline, get, and ignore for the cin object
103
Starting Out with C++, 3rd Edition
3.11 More Mathematical Library Functions
• The C++ runtime library provides several functions for performing complex mathematical operations.
• In this chapter we have used width, precision, setf, and unsetf for the cout object
• In this chapter we have used width, getline, get, and ignore for the cin object
104
Starting Out with C++, 3rd Edition
Table 3-14ab s Example Usage:
y = a b s (x ); Description Returns the absolute value of the argument. The
argument and the return value are integers. c o s Example Usage:
y = c o s (x ); Description Returns the cosine of the argument. The argument
should be an angle expressed in radians. The return type and the argument are doubles.
e x p Example Usage: y = e x p (x );
Description Computes the exponential function of the argument, which is x . The return type and the argument are doubles.
105
Starting Out with C++, 3rd Edition
Table 3-14 continuedfm o d Example Usage:
y = fm o d (x , z ); Description Returns, as a double, the remainder of the first argument
divided by the second argument. Works like the modulus operator, but the arguments are doubles. (The modulus operator only works with integers.) Take care not to pass zero as the second argument. Doing so would cause division by zero.
lo g Example Usage: y = lo g (x );
Description Returns the natural logarithm of the argument. The return type and the argument are doubles.
lo g 1 0 Example Usage: y = lo g 1 0 (x );
Description Returns the base-10 logarithm of the argument. The return type and the argument are doubles.
106
Starting Out with C++, 3rd Edition
Table 3-14 continueds in Example Usage:
y = s in (x ); Description Returns the sine of the argument. The argument should be an angle
expressed in radians. The return type and the argument are doubles. sq rt Example Usage:
y = sq rt(x ); Description Returns the square root of the argument. The return type and
argument are doubles.
ta n Example Usage: y = ta n (x ); Description Returns the tangent of the argument. The argument should be an
angle expressed in radians. The return type and the argument are doubles.
107
Starting Out with C++, 3rd Edition
Program 3-33// This program asks for the lengths of the 2 sides of a right // triangle. The length of the hypotenuse is then calculated// and displayed.#include <iostream.h>#include <math.h> // For sqrt and pow
void main(void){
float a, b, c;
cout << "Enter the length of side A: ";cin >> a;cout << "Enter the length of side B: ";cin >> b;c = sqrt(pow(a, 2.0) + pow(b, 2.0));cout.precision(2);cout << "The length of the hypotenuse is ";cout << c << endl;
}
108
Starting Out with C++, 3rd Edition
Program Output
Enter the length of side A: 5.0 [Enter]Enter the length of side B: 12.0 [Enter]The length of the hypotenuse is 13
109
Starting Out with C++, 3rd Edition
Random numbers
rand() (from the cstdlib library)
110
Starting Out with C++, 3rd Edition
Program 3-34// This program demonstrates random numbers.#include <iostream.h>#include <stdlib.h>using namespace std;
void main(void){
unsigned seed;cout << "Enter a seed value: ";cin >> seed;srand(seed);cout << rand() << endl;cout << rand() << endl;cout << rand() << endl;
}
111
Starting Out with C++, 3rd Edition
Program Output
Enter a seed value: 517313203621622Program Output with Other Example InputEnter a seed value: 165540296639920
112
Starting Out with C++, 3rd Edition
3.13 Optional Section : Introduction to Simple File Input and Output
• What is a File? A file is a collection on information, usually stored on a computer’s disk. Information can be saved to files and then later reused.
113
Starting Out with C++, 3rd Edition
The Process of Using a File
• Using a file in a program is a simple three-step process• The file must be opened. If the file does not yet
exits, opening it means creating it.• Information is then saved to the file, read from
the file, or both.• When the program is finished using the file, the
file must be closed.
114
Starting Out with C++, 3rd Edition
Figure 3-8
115
Starting Out with C++, 3rd Edition
Figure 3-9
116
Starting Out with C++, 3rd Edition
Setting Up a Program for File Input/Output
• Before file I/O can be performed, a C++ program must be set up properly.
• File access requires the inclusion of the fstream.h header file.
117
Starting Out with C++, 3rd Edition
Table 3-16
File Type Default Open Mode ofstream The file is opened for output only. Information may be written
to the file, but not read from the file.
ifstream The file is opened for input only. Information may be read from the file, but not written to it.
fstream The file is opened for input and output. Information may be written to the file or read from it.
118
Starting Out with C++, 3rd Edition
Opening a File
• Before data can be written to or read from a file, the file must be opened.
ifstream inputFile;inputFile.open(“customer.dat”);
119
Starting Out with C++, 3rd Edition
Closing a File
• A file should be closed when a program is finished using it.
outputFile.close();
120
Starting Out with C++, 3rd Edition
Writing Information to a File
• The stream insertion operator (<<) may be used to write information to a file.
outputFile << “I love C++ programming !”
outputFile << “Price: “ << price;
121
Starting Out with C++, 3rd Edition
Program 3-35// This program uses the << operator to write information to a// file.#include <iostream.h>#include <fstream.h>
void main(void){
ofstream outputFile;
outputFile.open("demofile.txt");cout << "Now writing information to the file.\n";
// Write 4 great names to the fileoutputFile << "Bach\n";outputFile << "Beethoven\n";outputFile << "Mozart\n";outputFile << "Schubert\n";
122
Starting Out with C++, 3rd Edition
Program 3-35 (continued)// Close the fileoutputFile.close();cout << "Done.\n";
}
Program Screen Output
Now writing information to the file.Done.
Output to File demofile.txt
BachBeethovenMozartSchubert
123
Starting Out with C++, 3rd Edition
Reading Information from a File
• The stream extraction operator (>>) may be used to read information from a file.
inFile >> name;
124
Starting Out with C++, 3rd Edition
Program 3-36// This program uses the >> operator to read information from a// file.#include <iostream.h>#include <fstream.h>
void main(void){
ifstream inFile;char name[81];
inFile.open("demofile.txt");cout << "Reading information from the file.\n\n";
// Now read name 1 from the fileinFile >> name;cout << name << endl;// Now read name 2 from the fileinFile >> name;cout << name << endl
125
Starting Out with C++, 3rd Edition
Program 3-36 (continued)// Now read name 3 from the fileinFile >> name;cout << name << endl;// Now read name 4 from the fileinFile >> name;cout << name << endl;
// Close the fileinFile.close();cout << "\nDone.\n";
}
Program Screen OutputReading information to the file.
BachBeethovenMozartSchubert
Done.
126
Starting Out with C++, 3rd Edition
Program 3-37// This program uses the >> operator to read information from a// file.#include <iostream.h>#include <fstream.h>
void main(void){
ifstream inFile;int length, width, area;
inFile.open("dimensions.txt");cout << "Reading dimensions of 5 rectangles from the file.\n\n";
// Process rectangle 1inFile >> length;inFile >> width;area = length * width;cout << "Area of rectangle 1: " << area << endl;
// Process rectangle 2inFile >> length;inFile >> width;area = length * width;cout << "Area of rectangle 2: " << area << endl;
127
Starting Out with C++, 3rd Edition
Program 3-37 (continued)// Process rectangle 3inFile >> length;inFile >> width;area = length * width;cout << "Area of rectangle 3: " << area << endl;
// Process rectangle 4inFile >> length;inFile >> width;area = length * width;cout << "Area of rectangle 4: " << area << endl;
// Process rectangle 5inFile >> length;inFile >> width;area = length * width;cout << "Area of rectangle 5: " << area << endl;
// Close the fileinFile.close();cout << "\nDone.\n";
}
128
Starting Out with C++, 3rd Edition
Program 3-37Before Program 3-37 is executed, the file dimensions.txt must be created with a text editor (such as Windows Notepad). Here is an example of the file's contents:
10 25 718 96 208 3
129
Starting Out with C++, 3rd Edition
Program 3-37The program's output is shown below.
Program OutputReading dimensions of 5 rectangles from the file.
Area of rectangle 1: 20Area of rectangle 2: 35Area of rectangle 3: 162Area of rectangle 4: 120Area of rectangle 5: 24
Done.