+ All Categories
Home > Documents > C++ Programming: Program Design Including Data Structures, Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition

Date post: 11-Jan-2016
Category:
Upload: zaynah
View: 25 times
Download: 1 times
Share this document with a friend
Description:
C++ Programming: Program Design Including Data Structures, Second Edition. Chapter 8: User-Defined Simple Data Types, Namespaces, and the string Type. Objectives. In this chapter you will: Learn how to create and manipulate your own simple data type — called the enumeration type - PowerPoint PPT Presentation
55
C++ Programming: Program Design Including Data Structures, Second Edition Chapter 8: User-Defined Simple Data Types, Namespaces, and the string Type
Transcript
Page 1: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming:Program Design Including Data

Structures, Second Edition

Chapter 8: User-Defined Simple Data Types, Namespaces, and the string

Type

Page 2: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

2

Objectives

In this chapter you will:

• Learn how to create and manipulate your own simple data type — called the enumeration type

• Become aware of the typedef statement• Learn about the namespace mechanism• Explore the string data type, and learn how to

use the various string functions to manipulate strings

Page 3: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

3

Enumeration Type

• Data type - a set of values together with a set of operations on those values

• To define a new simple data type, called enumeration type, we need three things:

• A name for the data type

• A set of values for the data type

• A set of operations on the values

Page 4: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

4

Enumeration Type (continued)

• The syntax for enumeration type is:

enum typeName{value1, value2, ...};

value1, value2, … are identifiers called enumerators

value1 < value2 < value3 <...

• A new simple data type can be defined by specifying its name and the values, but not the operations

• The values must be identifiers

Page 5: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

5

Enumeration Type

• is an ordered set of values

• If a value has been used in one enumeration type

• It cannot be used by another in the same block

enum mathStudents{John, Bill, Lisa};

enum compStudents {Susan, John, william};

John is not allowed in the 2nd enum type

• The same rules apply to enumeration types declared outside of any blocks

Page 6: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

6

Enumeration Types

• C++ allows creation of a new simple type by listing (enumerating) all the ordered values in the domain of the type

EXAMPLE

• Below JAN < FEB < MAR < APR , and so on

enum MonthType { JAN, FEB, MAR, APR, MAY, JUN,

JUL, AUG, SEP, OCT, NOV, DEC } ;

name of new type list of all possible values of this new type

Page 7: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

7

Examples

• The following are illegal enumeration types because none of the values is an identifier:

enum grades{'A', 'B', 'C', 'D', 'F'};

enum places{1st, 2nd, 3rd, 4th};

• The following are legal enumeration types:

enum grades{A, B, C, D, F};

enum places{first, second, third, fourth};

Page 8: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

8

Declaring Variables

• The syntax for declaring variables is:

dataType identifier, identifier,...;• The following statement defines an

enumeration type sports

enum sports{basketball, football, hockey,

baseball, soccer, volleyball};

• The following statement declares variables of the type sports.

sports popularSport, mySport;

Page 9: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

9

Assignment

• The statement:

popularSport = football;

stores the word football into popularSport

• The statement:

mySport = popularSport;

copies the contents of the variable popularSport into mySport

Page 10: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

10

Declaring enum Type Variables

enum MonthType { JAN, FEB, MAR, APR, MAY, JUN,

JUL, AUG, SEP, OCT, NOV, DEC } ;

MonthType thisMonth; // declares 2 variables

MonthType lastMonth; // of type MonthType

lastMonth = OCT ; // assigns values

thisMonth = NOV ; // to these variables...

lastMonth = thisMonth ;

thisMonth = DEC ; 10

Page 11: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

11

Storage of enum Type Variables

enum MonthType { JAN, FEB, MAR, APR, MAY, JUN,

JUL, AUG, SEP, OCT, NOV, DEC } ;

stored as 0 stored as 1 stored as 2 stored as 3 etc.

stored as 11

Page 12: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

12

Operations• No arithmetic operation is allowed on enumeration

types

• The following statements are illegal;

mySport = popularSport + 2; //illegal

popularSport = football + soccer; //illegal

popularSport = popularSport * 2; // illegal

• The increment and decrement operations are not allowed on enumeration types

• The following statements are illegal;

popularSport++; //illegal

popularSport--; //illegal

Page 13: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

13

C++ Simple Data TypesC++ Simple Data Types

simple types

integral floating

char short int long bool enum float double long double

unsigned

Page 14: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

14

More about enum Type1. Stream I/O ( using the insertion << and extraction >> operators

) is not defined for enumeration types. Instead, functions can be written for this purpose.• Input and output are defined only for built-in data types

such as int, char, double• The enumeration type can be neither input nor output

(directly)

2. Comparison of enum type values is defined using the 6 relational operators ( < , <= , > , >= , == , != ).

3. Enumeration type can be used in a Switch statement for the switch expression and the case labels.

4. An enum type can be the return type of a value-returning function in C++.

Page 15: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

15

Operations and Input/Output

• Because an enumeration is an ordered set of values• We can use relational operators with them

• The cast operator can be used to increment, decrement, and compare values

popularSport = static_cast <sports> (popularSport +1);

popularSport++; //illegal

football <= soccer // is true

Page 16: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

16

MonthType thisMonth;

switch ( thisMonth ) // using enum type switch expression{ case JAN :

case FEB :case MAR : cout << “Winter quarter” ;

break ;case APR :

case MAY :case JUN : cout << “Spring quarter” ;

break ; case JUL :case AUG :case SEP : cout << “Summer quarter” ;

break ; case OCT :

case NOV :case DEC : cout << “Fall quarter” ;

}

16

Page 17: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

17

Functions and Enumeration Types

• Enumeration type can be passed as parameters to functions either by value or by reference

• A function can return a value of the enumeration type

Page 18: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

18

Using enum type Control Variable with for Loop

enum MonthType { JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC } ;

void WriteOutName ( /* in */ MonthType ) ; // prototype.. .

MonthType month ;

for (month = JAN ; month <= DEC ; month = static_cast <MonthType> (month + 1 ) )

{ // requires use of type cast to increment

WriteOutName ( month ) ; // function call to perform output .

}18

Page 19: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

19

void WriteOutName ( /* in */ MonthType month )// Prints out calendar name corresponding to month// Precondition: month is assigned// Postcondition: calendar name for month has been written out

{ switch ( month ) {

case JAN : cout << “ January ” ; break ;case FEB : cout << “ February ” ; break ;case MAR : cout << “ March ” ; break ;case APR : cout << “ April ” ; break ;

case MAY : cout << “ May ” ; break ;case JUN : cout << “ June ” ; break ; case JUL : cout << “ July ” ; break ;case AUG : cout << “ August ” ; break ;case SEP : cout << “ September ” ; break ; case OCT : cout << “ October ” ; break ;

case NOV : cout << “ November ” ; break ;case DEC : cout << “ December ” ; break ;

}

}

19

Page 20: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

20

enum SchoolType { PRE_SCHOOL, ELEM_SCHOOL, MIDDLE_SCHOOL, HIGH_SCHOOL, COLLEGE } ;

.

.

.

SchoolType GetSchoolData ( void )

// Obtains information from keyboard to determine school level// Postcondition: Function value == personal school level{

SchoolType schoolLevel ;

int age ;

int lastGrade ;

cout << “Enter age : “ ; // prompt for information

cin >> age ;

Function with enum type Return Value

20

Page 21: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

21

if ( age < 6 )

schoolLevel = PRE_SCHOOL ;

else

{ cout << “Enter last grade completed in school : “ ;

cin >> lastGrade;

if ( lastGrade < 5 )

schoolLevel = ELEM_SCHOOL ;

else if ( lastGrade < 8 )

schoolLevel = MIDDLE_SCHOOL ;

else if ( lastGrade < 12 )

schoolLevel = HIGH_SCHOOL ;

else

schoolLevel = COLLEGE ;

}

return schoolLevel ; // return enum type value

}

21

Page 22: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

22

Multifile C++ Programs

• C++ programs often consist of several different files with extensions such as .h and .cpp

• related typedef statements, const values, enum type declarations, and similar items are often placed in user-written header files

• by using the #include preprocessor directive the contents of these header files are inserted into any program file that

uses them

Page 23: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

23

Inserting Header Files

#include <iostream> // iostream

#include “school.h”

int main ( )

{ enum SchoolType

{ PRE_SCHOOL,

. ELEM_SCHOOL,

. MIDDLE_SCHOOL,

. HIGH_SCHOOL, COLLEGE } ;

}

Page 24: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

24

Anonymous Data Types

• Anonymous - a data type in which values are directly specified in the variable declaration with no type name, for example:

enum {basketball, football, baseball} mysport;

• Creating an anonymous type has drawbacks

We cannot pass an anonymous type as a parameter to a function

• use them with care !!!

Page 25: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

25

Anonymous Data Types

• A function cannot return a value of an anonymous type

• Values used in one can be used in another, but they are treated differently

Page 26: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

26

typedef Statement

• You can create synonyms or aliases to a previously defined data type by using the typedef statement

• The syntax of the typedef statement is:

typedef existingTypeName newTypeName;

• typedef does not create any new data types• typedef creates an alias to an existing data type

typedef creates an additional name for an already existing data type

Page 27: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

27

typedef statement

• before bool type became part of ISO-ANSI C++, a Boolean type was simulated this way

typedef int Boolean; // new data type Booleanconst Boolean true = 1 ;const Boolean false = 0 ;

.

.

.

Boolean dataOK ;...

dataOK = true ;

Page 28: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

28

ANSI/ISO Standard C++

• ANSI/ISO standard C++ was officially approved in July 1998

• Most of the recent compilers are also compatible with ANSI/ISO standard C++

this book focus

• For the most part, standard C++ and ANSI/ISO standard C++ are the same, but

• ANSI/ISO Standard C++ has some features not available in Standard C++

Page 29: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

29

Namespaces

• When a header file, such as iostream, is included in a program• Global identifiers in the header file also become global

identifiers in the program

• If a global identifier in a program has the same name as one of the global identifiers in the header file• The compiler will generate a syntax error (such as

identifier redefined)

• The same problem can occur if a program uses third party libraries

Page 30: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

30

Namespaces (continued)

• To overcome this problem, third party vendors begin their global identifiers with a special symbol

• Because compiler vendors begin their global identifier with _ (underscore)• To avoid linking errors, do not begin identifiers

in your program with _

• ANSI/ISO standard C++ attempts to solve this problem of overlapping global identifier names with the namespace mechanism

Page 31: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

31

Syntax: namespace• The syntax of the statement namespace is:

namespace namespace_name{

members}

• where a member is usually a variable declaration, a named constant, e.g. const double rate = 7.50; a function, e.g. void printResult(); or another namespace

namespace globalType // e.g.{

const double rate = 7.50;void printResult();

}

Page 32: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

32

Accessing a namespace Member

• The scope of a namespace member is local to the namespace

• Usually two ways a namespace member can be accessed outside the namespace

1. One way is to use the syntax:

namespace_name::identifier To access the member rate of the namespace

globalType, the following statement is required:globalType::rate

• To access the function printResult, the following statement is required:

globalType::printResult();

Page 33: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

33

Accessing a namespace Member

2. To simplify the accessing of all namespace members:

using namespace namespace_name;

e.g. using namespace globalType;

using namespace std;

3. To simplify the accessing of a specific namespace member:

using namespace_name::identifier;

e.g. using globalType::rate;

Page 34: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

34

The using Statement

• After the using statement• Not necessary to precede the namespace_name ::

before the namespace member

• e.g. p.399/4 either x or expN::x

• If a namespace member and a global identifier or a block identifier have the same name• namespace_name :: must precede the

namespace member

• e.g. p.398/2 expN::x

Page 35: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

35

The string Type p.1475

• To use the data type string, the program must include the header file <string> p.1475

• The statement:

string name = "William Jacob";

declares name to be a string variable and also initializes name to "William Jacob"

• The first character, 'W', in name is in position 0,

• the second character, 'i', is in position 1, and so on

Page 36: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

36

The string Type (continued)

• The variable name is capable of storing any size string

• Binary operator + (to allow the string concatenation operation), and the array subscript operator [ ], have been defined for the data type string

• If str1 = "Sunny", the statement stores the string "Sunny Day" into str2:

str2 = str1 + " Day";

Page 37: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

37

length Function

• Length returns the number of characters currently in the string

• The syntax to call the length function is:

strVar.length()where strVar is variable of the type string• no arguments

• length returns an unsigned integer

• The value returned can be stored in an integer variable

Page 38: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

38

size Function

• The function size is same as the function length• Both functions return the same value

• The syntax to call the function size is:strVar.size()

where strVar is variable of the type string

• has no arguments

Page 39: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

39

find Function

• find searches a string for the first occurrence of a particular substring

• Returns an unsigned integer value of type string::size_type (an unsigned integral (data) type)

giving the result of the search

• The syntax to call the function find is:strVar.find(strExp)

where strVar is a string variable and strExp is a string expression evaluating to a string

• The string expression, strExp, can also be a character

Page 40: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

40

find Function (continued)

• If successful, find returns the position in strVar where the match begins

• For the search to be successful the match must be exact

• If unsuccessful, find returns the special value string::npos (“not a position within the string”) – max value of data type string

Page 41: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

41

substr Function

• substr returns a particular substring of a string

• The syntax to call the function substr is:

strVar.substr(expr1,expr2)

• where expr1 and expr2 are expressions evaluating to unsigned integers

• The expression expr1 specifies a position within the string (starting position of the substring)

• The expression expr2 specifies the length of the substring to be returned

Page 42: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

42

swap Function

• swap interchanges the contents of two string variables

• The syntax to use the function swap is

strVar1.swap(strVar2);where strVar1 and strVar2 are string variables

• Suppose you have the following statements:string str1 = "Warm";

string str2 = "Cold";

• After str1.swap(str2); executes, the value of str1 is "Cold" and the value of str2 is "Warm"

Page 43: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

43

Programming Example: Pig Latin Strings p.410

• Program prompts user to input a string

• Then outputs the string in the pig Latin form

• The rules for converting a string into pig Latin form are as follows:

1. If the string begins with a vowel, add the string "-way" at the end of the string

− For example, the pig Latin form of the string "eye" is "eye-way“

Page 44: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

44

Pig Latin Strings (continued)

2. If the string does not begin with a vowel, first add "-" at the end of the string

− Then move the 1st of the string to the end of the string until the first character of the string becomes a vowel

− Next, add the string "ay" at the end

− For example, the pig Latin form of the string "There" is "ere-Thay“

− For this program the vowels are a, e, i, o, u, y, A, E, I, O, U, and Y the pig Latin form of "by" is "y-bay“

Page 45: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

45

Pig Latin Strings (continued)

3. Strings such as "1234" contain no vowels − The pig Latin form of a string that has no vowels

in it is the string followed by the string "-way“

− For example, the pig Latin form of the string "1234" is "1234-way“

Page 46: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

46

Problem Analysis

• If str denotes a string

• Check the first character, str[0], of str

• If str[0] is a vowel, add "-way" at the end of str

• If the first character of str, str[0], is not a vowel

First add "-" at the end of the string

Remove the first character of str from str and put it at end of str

• Now the second character of str becomes the first character of str

• This process is repeated until either

1. The first character of str is a vowel

2. All characters of str are processed, in which case str does not contain any vowels

Page 47: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

47

Algorithm Design

• The program contains the following functions:• isVowel - to determine whether a character is

a vowel• rotate - to move first character of str to the end

of str• pigLatinString - to find the pig Latin form of

str• Main Algorithm:

1. Get str2. Use the function pigLatinString to find the pig

Latin form of str 3. Output the pig Latin form of str

Page 48: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

48

Function isVowel

bool isVowel(char ch){

switch(ch){case 'A': case 'E': case 'I': case 'O': case 'U': case 'Y':case 'a': case 'e': case 'i': case 'o': case 'u': case 'y': return true;default: return false;}

}

Page 49: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

49

Function rotate (continued)

string rotate(string pStr) // Takes a string as a parameter{

int len = pStr.length();string rStr;rStr = pStr.substr(1,len - 1) + pStr[0]; // Removes

1st

// chr and places it at end

return rStr;}

Page 50: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

50

// Pig Latin Strings p.410#include <iostream>#include <string>using namespace std;

bool isVowel(char ch);string rotate(string pStr);string pigLatinString(string pStr);

int main(){

string str;

cout << "Enter a string: ";cin >> str;cout << endl;

cout << "The pig Latin form of " << str << " is: " << pigLatinString(str) << endl;

return 0;}

bool isVowel(char ch){

switch (ch){case 'A': case 'E': case 'I': case 'O': case 'U': case 'Y':case 'a': case 'e': case 'i': case 'o': case 'u': case 'y': return true;default: return false;}

}

string rotate(string pStr){

string::size_type len = pStr.length();string rStr;rStr = pStr.substr(1, len - 1) + pStr[0];return rStr;

}string pigLatinString(string pStr) // see next slide{

string::size_type len;bool foundVowel;string::size_type counter;

if (isVowel(pStr[0])) //Step 1 pStr = pStr + "-way";else //Step 2{ pStr = pStr + '-'; pStr = rotate(pStr); //Step 3

len = pStr.length(); //Step 3.a foundVowel = false; //Step 3.b

for (counter = 1; counter < len - 1; counter++)//Step 3.d if (isVowel(pStr[0])) { foundVowel = true; break; } else //Step 3.c pStr = rotate(pStr);

if (!foundVowel) //Step 4 pStr = pStr.substr(1, len) + "-way"; else

pStr = pStr + "ay"; }return pStr; //Step 5}

Page 51: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

51

1. If pStr[0] is a vowel, add "-way" at end

of pStr

2. If pStr[0] is not a vowel3a. Move the first character of pStr to the

end of pStr The second character of pStr

becomes the first character of pStr• Now pStr may or may not contain a

vowel

3b. Use a Boolean variable, foundVowel, which is set to true if pStr contains a vowel and false otherwise

initialize foundVowel to false

3c. if pStr[0] is not a vowel, move str[0] to the end of pStr by calling the function rotate

repeat above step until either the first character of pStr becomes a vowel or all characters of pStr have been checked

4. Convert pStr into the pig Latin form

5. Return pStr

string pigLatinString(string pStr){

string::size_type len;bool foundVowel;string::size_type counter;

if (isVowel(pStr[0])) //Step 1 pStr = pStr + "-way";else //Step 2{ pStr = pStr + '-'; pStr = rotate(pStr); //Step 3

len = pStr.length(); //Step 3.a foundVowel = false; //Step 3.b

for (counter = 1; counter < len - 1; counter++) if (isVowel(pStr[0])) { foundVowel = true; break; } else //Step 3.c pStr = rotate(pStr);

if (!foundVowel) //Step 4 pStr = pStr.substr(1, len) + "-way"; else

pStr = pStr + "ay"; }return pStr; //Step 5}

Page 52: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

52

Summary

• An enumeration type is a set of ordered values• Reserved word enum creates an enumeration

type

• No arithmetic operations are allowed on the enumeration type

• Relational operators can be used with enum values

• Enumeration type values cannot be input or output directly

Page 53: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

53

Summary

• An anonymous type is one where a variable’s values are specified without any type name

• C++’s reserved word typedef creates synonyms or aliases to previously defined data types

• The namespace mechanism is a feature of ANSI/ISO Standard C++

• A namespace member is usually a named constant, variable, function, or another namespace

Page 54: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

54

Summary

• The keyword namespace must appear in the using statement

• A string is a sequence of zero or more characters• Strings in C++ are enclosed in double

quotation marks

• In C++, [] is called the array subscript operator

• The function length returns the number of characters currently in the string

Page 55: C++ Programming: Program Design Including Data Structures,  Second Edition

C++ Programming: Program Design Including Data Structures, Second Edition expanded by J. Goetz, 2004

55

Summary

• The function size returns the number of characters currently in the string

• The function find searches a string to locate the first occurrence of a particular substring

• The function substr returns a particular substring of a string

• The function swap is used to swap the contents of two string variables


Recommended