spec of the program outputs:

26
8/20/2007 Chung-Chih Li @ ISU ITK 2 79 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

Upload: ulysses-mcdaniel

Post on 31-Dec-2015

14 views

Category:

Documents


0 download

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

TRANSCRIPT

Page 1: Spec of the program outputs:

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

Page 2: Spec of the program outputs:

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);

Page 3: Spec of the program outputs:

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)

Page 4: Spec of the program outputs:

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;

Page 5: Spec of the program outputs:

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

Page 6: Spec of the program outputs:

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

Page 7: Spec of the program outputs:

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

Page 8: Spec of the program outputs:

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)

Page 9: Spec of the program outputs:

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

Page 10: Spec of the program outputs:

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

Page 11: Spec of the program outputs:

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

Page 12: Spec of the program outputs:

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;

?

?

Page 13: Spec of the program outputs:

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

Page 14: Spec of the program outputs:

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...

Page 15: Spec of the program outputs:

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: ";

Page 16: Spec of the program outputs:

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

Page 17: Spec of the program outputs:

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

Page 18: Spec of the program outputs:

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

Page 19: Spec of the program outputs:

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

Page 20: Spec of the program outputs:

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

Page 21: Spec of the program outputs:

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

Page 22: Spec of the program outputs:

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.

Page 23: Spec of the program outputs:

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

Page 24: Spec of the program outputs:

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 \\ \” \’

Page 25: Spec of the program outputs:

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 " "!";

Page 26: Spec of the program outputs:

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!!

?