Spec of the program outputs:

Preview:

DESCRIPTION

Spec of the program outputs:. What's your name? Dennis Hi! Dennis! Input the price for 10% discount: 200 Input the quantity: 5 Input the price for 20% discount: 500 Input the quantity: 4 Total items: 9 Amount: 2500.00 - PowerPoint PPT Presentation

Citation preview

8/20/2007Chung-Chih Li @ ISU ITK 279 1

Spec of the program outputs:

What's your name? Dennis

Hi! Dennis!

Input the price for 10% discount: 200 Input the quantity: 5 Input the price for 20% discount: 500 Input the quantity: 4

Total items: 9 Amount: 2500.00 Tax rate: 8.5% Total amount: 2712.50

Press any key to continue

8/20/2007Chung-Chih Li @ ISU ITK 279 2

#include <iostream>#include <string>

using namespace std;

void main(){

string name;int itemNo = 0;int a,b;int total_item;float price_1, price_2;const float taxRate = 0.085;float discount = 0.1, Discount (0.2);double amount;

cout << "What's your name? ";cin >> name;cout << "\nHi! " << name << "!\n\n";

CPP program for the baby counter (part 1)

cout.setf(ios::fixed);cout.setf(ios::showpoint);cout.precision(2);

8/20/2007Chung-Chih Li @ ISU ITK 279 3

cout << "\t Input the price for ";cout << (int) (discount*100) << "% discount: ";cin >> price_1;cout << "\t Input the quantity: ";cin >> a;

cout << "\t Input the price for ";cout << (int) (Discount*100) << "% discount: ";cin >> price_2;cout << "\t Input the quantity: ";cin >> b;

total_item = a + b;cout << "\n\n\t Total items:\t" << total_item << endl;

amount = price_1*a*(1-discount)+price_2*b*(1-Discount);cout << "\t Amount:\t" << amount << endl;

cout << "\t Tax rate: \t" << taxRate << endl;amount = (price_1*a*(1-discount)+price_2*b*(1-Discount))

*(1+taxRate);cout << "\t Total amount: \t" << amount << endl << endl;

}

CPP program for the baby counter (part 2)

8/20/2007Chung-Chih Li @ ISU ITK 279 4

#include <iostream>#include <string>

using namespace std;

/* This is a program that can do something .. By Chung-Chih Li*/void main(){

string name; // string is a classint itemNo = 0;int a,b;int total_item;float price_1, price_2;const float taxRate = 0.085;float discount = 0.1, Discount = 0.2;double amount;cout << "What's your name? ";cin >> name;cout << "\nHi! " << name << "!\n\n";

DirectivesThese two statements use the include directive to ask the compiler to provide necessary accesses to the two standard libraries.

The directive using asks the compiler to use the definitions in namespace std.

alternatively: (for this program)using std::cin;using std::cout;using std::endl;using std::ios;using std::string;

8/20/2007Chung-Chih Li @ ISU ITK 279 5

#include <iostream>#include <string>

using namespace std;

/* This is a program that can do something .. By Chung-Chih Li*/void main(){

string name; // string is a classint itemNo = 0;int a,b;int total_item;float price_1, price_2;const float taxRate = 0.085;float discount = 0.1, Discount = 0.2;double amount;

cout << "What's your name? ";cin >> name;cout << "\nHi! " << name << "!\n\n";

Comments

8/20/2007Chung-Chih Li @ ISU ITK 279 6

#include <iostream>#include <string>

using namespace std;

void main(){

string name;int itemNo = 0;int a,b;int total_item;float price_1, price_2;const float taxRate = 0.085;float discount = 0.1, Discount (0.2);double amount;

cout << "What's your name? ";cin >> name;cout << "\nHi! " << name << "!\n\n";

Identifiers

8/20/2007Chung-Chih Li @ ISU ITK 279 7

#include <iostream>#include <string>

using namespace std;

void main(){

string name;int itemNo = 0;int a,b;int total_item;float price_1, price_2;const float taxRate = 0.085;float discount = 0.1, Discount (0.2);double amount;

cout << "What's your name? ";cin >> name;cout << "\nHi! " << name << "!\n\n";

Variables and Types

8/20/2007Chung-Chih Li @ ISU ITK 279 8

string name;int itemNo = 0;int a,b;int total_item;float price_1, price_2;const float taxRate = 0.085;float discount = 0.1, Discount (0.2);double amount;

cout << "What's your name? ";cin >> name;cout << "\nHi! " << name << "!\n\n";

cout << "\t Input the price for ";cout << (int) (discount*100) << "% discount: ";cin >> price_1;cout << "\t Input the quantity: ";cin >> a;

Literals (constants)

8/20/2007Chung-Chih Li @ ISU ITK 279 9

#include <iostream>#include <string>

using namespace std;

void main(){

string name;int itemNo = 0;int a,b;int total_item;float price_1, price_2;const float taxRate = 0.085;float discount = 0.1, Discount (0.2);double amount;

cout << "What's your name? ";cin >> name;cout << "\nHi! " << name << "!\n\n";

Value Initialization

8/20/2007Chung-Chih Li @ ISU ITK 279 10

short s;int i;long l;float f;double d;long double u;char c;bool b;

cout << "sizeof(short) :\t\t " << sizeof(short) << " sizeof(s) : " << sizeof(s) << endl;

Simple Typessizeof(short) : 2 sizeof(s) : 2sizeof(int) : 4 sizeof(i) : 4sizeof(long) : 4 sizeof(l) : 4sizeof(double) : 8 sizeof(d) : 8sizeof(long double) : 8 sizeof(u) : 8sizeof(char) : 1 sizeof(c) : 1sizeof(bool) : 1 sizeof(b) : 1

Press any key to continue

8/20/2007Chung-Chih Li @ ISU ITK 279 11

total_item = a + b;

total_item = a;

a = a;

amount = (price_1*a*(1-discount)+price_2*b*(1-Discount)) *(1+taxRate);

Assignment I

a + 1 = a

L-value = R-value

8/20/2007Chung-Chih Li @ ISU ITK 279 12

a += 2; a /= 2;a %= 2;a *= a;........total_item = a + b;

cout << (a = 2*3);

a = b = 3;a = (b = 3);

Assignment II

a = a+b = 3;

?a = 3;a *= a*= 2;cout << a;

36(a = b) = 3;

a = 3;a = a * ( a *=2); cout << a;

a = 3;a = a * ( a = a*2);cout << a;

?

?

8/20/2007Chung-Chih Li @ ISU ITK 279 13

Arithmetic operators and their precedence rules

amount = (price_1*a*(1-discount)+price_2*b*(1-Discount))* (1+taxRate);

precedence rules: % * /

+ - * / %

> + -

a-b-c-d ((a-b)-c)-d

a=b=c=d a=(b=(c=d))

left-to-right

8/20/2007Chung-Chih Li @ ISU ITK 279 14

Increment and Decrement

i++;++i;

i = i+1; i--;

--i;

i = i-1;

n = (i++);

n = (++i);

n = i;i = i+1;

i = i+1;n = i;

i=0;s = (++(++i))++;cout << i << endl;cout << s << endl;

i=0;i = i+1;i = i+1;s = i;i = i+1;cout...

8/20/2007Chung-Chih Li @ ISU ITK 279 15

Type Coercion (Type Casting)

Input the price for 10% discount: 200Input the quantity: 5Input the price for 20% discount: 500Input the quantity: 4

float discount = 0.1, Discount (0.2);

cout << "\t Input the price for ";cout << (int) (discount*100) << "% discount: ";......cout << "\t Input the price for ";cout << (int) (Discount*100) << "% discount: ";

8/20/2007Chung-Chih Li @ ISU ITK 279 16

Type Coercion (Type Casting), (Implicit)

double score_1=1, score_2=2;int no_test=2;double average;.....average = (score_1 + score_2 )/ no_test;

int i=1, j=2, k=3;double r=1, s=2, t=3;double a,b,c,d,e;...a = r/t + s/t; // 0.33333... + 0.66666...

b = i/k + j/k; // 1/3 + 2/3 0 + 0

c = (i+j)/k; // (1+2) / 3 3/3

d = i/t + j/k; // 0.33333... + 0

e = (i+r)/k; // (1+1.0)/3 2.0/3 0.66666

8/20/2007Chung-Chih Li @ ISU ITK 279 17

Type Casting, (Explicit)

int score_1=1, score_2=2;int no_test=2;double average;.....average = (score_1 + score_2 )/ no_test; 1

average = (score_1 + score_2 )/ ((double)no_test);

1.5average = (double)(score_1 + score_2 )/no_test;

average = (double)((score_1 + score_2 )/no_test); 1average =(score_1 + score_2 + 0.0)/no_test; 1.5

older form

...... (.....)/ double(no_test);

...... (.....)/ static_cast<double>(no_test);

new notation for C++ standard

8/20/2007Chung-Chih Li @ ISU ITK 279 18

More on Type Castingint i;i = 1/2.0;double a;

a = static_cast<int>(1/2.0);

double p=2.99;const double tax=0.085;double total = p*(1+tax);

cout << total;

total = double(int(p*(1+tax)*100))/100;

3.24415

3.24

total = (int(p*(1+tax)*100))/100; 3

a = 0.0

a = 1/2.0; a = 0.5

8/20/2007Chung-Chih Li @ ISU ITK 279 19

#include <iostream>#include <string>

using namespace std;

cout, the Class

cout.setf(ios::fixed);cout.setf(ios::showpoint);cout.precision(2);

scientific notation:1.2293e+009

fixed point:1229312345.6712.00

ref: page 490

8/20/2007Chung-Chih Li @ ISU ITK 279 20

The insertion operator: <<

Standard Console I/O: cin and cout

cout << x; Insert the value of x to the standard output stream.cout << x,y; cout << x << y;

x=5; y=9;cout << x << y << “ “ << x << “ “ << y << “d“;

59 5 9dThe printing will take place at the end of the cout statement. After printing, the output stream will become empty again.

Why we need a output stream?

Some location in the main memory (e.g. 004787f4)

59 5 9d

8/20/2007Chung-Chih Li @ ISU ITK 279 21

Evaluation order in a << statement

cout << "a" << (cout << "B") << endl;

cout << (cout << "a") << "B" << endl;

i=0;cout << i++ << i++ << i++ << endl;

23

12

01 0 i

210

Ba

a

004787f4

Ba004787f4

004787f4B

a004787f4B

8/20/2007Chung-Chih Li @ ISU ITK 279 22

The extraction operator: >>

cin >> x: Extract the value in the input stream to variable x.

cin >> x,y; cin >> x >> y;

cin >> x >> y;cin >> name; 5 9.6 Dennis

• Values in the input stream are separated by blank space or returns, or some proper delimiters.

• If there are more variables than values in the stream, the computer will halt and wait for more inputs.

8/20/2007Chung-Chih Li @ ISU ITK 279 23

The extraction operator: >>

int i,j,k;

cout << "Input 3 numbers, 1st:"; cin >> i;cout << “2nd:"; cin >> j;cout << “3rd:"; cin >> k;cout << "The three numbers are:"

<< i << " " << j << " " << k << "\n";

Input 3 numbers, 1st:102nd:2003rd:3000The three numbers are:10 200 3000

Input 3 numbers, 1st:1 2 32nd:3rd:The three numbers are:1 2 3

Input 3 numbers, 1st:22nd:4.33rd:The three numbers are:2 4 -858993460

8/20/2007Chung-Chih Li @ ISU ITK 279 24

Escape Sequences

cout << "What's your name? ";cin >> name;cout << "\nHi! \"" << name << "\"!\n\n";cout << "\t Input the price for ";

What's your name? Dennis

Hi! "Dennis"!

Input the price for 10% discount:

In a string that to be printed, C++ considers a character that immediately follows \ as a special symbol that “escapes” from its regular C++ meaning..

\n \t \\ \” \’

8/20/2007Chung-Chih Li @ ISU ITK 279 25

More on Escape Sequences

cout << "What's your name? ";cin >> name;cout << "\nHi! "" << name << ""!\n\n";cout << "\t Input the price for ";

What's your name? Dennis

Hi! << name << !

Input the price for 10% discount:

cout << x,y; cout << x y;

exception: cout << "Dennis " "Li " "!";

8/20/2007Chung-Chih Li @ ISU ITK 279 26

Nasty C++ Programs

a = (++n) + (i++);

OK!

n = 0;a = n + (++n);

n = 0;a = (++n) + n;

n = 0;a = (++n) + (++n);

a=0+1

a=1+1

a=1+1

a=1+0

2

2

4

KISS principle: Keep It Simple, Stupid!!

?

Recommended