enumeration data type

21
Enumeration Data Type enum Day {SUN, MON, TUE, WED, THU, FRI, SAT}; Day today; today = WED; if (today == FRI) cout << "We have a quiz or a test!"; else if (today == THU) cout << “We have a Lab!"; else if (today == SAT) cout << “Party!"; else cout << “What to do?”; 1

Upload: drew

Post on 19-Jan-2016

39 views

Category:

Documents


0 download

DESCRIPTION

Enumeration Data Type. enum Day {SUN, MON, TUE, WED, THU, FRI, SAT}; Day today; today = WED; if (today == FRI) cout

TRANSCRIPT

Page 1: Enumeration Data Type

Enumeration Data Type

enum Day {SUN, MON, TUE, WED, THU, FRI, SAT};

Day today;

today = WED; if (today == FRI) cout << "We have a quiz or a test!"; else if (today == THU) cout << “We have a Lab!"; else if (today == SAT) cout << “Party!"; else cout << “What to do?”;

1

Page 2: Enumeration Data Type

Enumeration Data Typeand const int

enum Day {SUN, MON, TUE, WED, THU, FRI, SAT};

Day today;

today = WED;

if (today == FRI) …

const int SUN = 0;

const int MON = 1;

const int TUE = 2;

const int WED = 3;

const int THU = 4;

const int FRI = 5;

const int SAT = 6;

int today;

today = 10;

2

Page 3: Enumeration Data Type

Enumeration Data Type

Operations on enum type

assignment

comparison

Function return value

Function parameters: &

No Input/Output!

3

Page 4: Enumeration Data Type

Using enum Type in C++ Classes

enum Status {FRESHMAN, SOPHOMORE, JUNIOR, SENIOR};

class StudentType

{

private:

string id;

string firstName, lastName;

float gpa;

Status standing;

public:

. . .

};

4

Page 5: Enumeration Data Type

Method Read of Class StudentType

void Read() { cin >> id >> firstName >> lastName >> gpa;

int credits; cin >> credits; if (credits <= 30) standing = FRESHMAN; else if (credits <= 60) standing = SOPHOMORE; else if (credits <= 90) standing = JUNIOR; else standing = SENIOR;

return; }

5

Page 6: Enumeration Data Type

Private Method

Status GetStanding() { int credits;

cin >> credits; if (credits <= 30) return FRESHMAN; else if (credits <= 60) return = SOPHOMORE; else if (credits <= 90) return = JUNIOR; else return = SENIOR; }

6

Page 7: Enumeration Data Type

Method Read of Class StudentType

void Read() { cin >> id >> firstName >> lastName >> gpa;

standing = GetStanding();

return; }

7

Page 8: Enumeration Data Type

Method Write of Class StudentType

void Write() { cout << endl << setw(25) << id << endl << setw(25) << firstName << endl << setw(25) << lastName << endl << setw(25) << gpa;

if (standing == FRESHMAN) cout << endl << setw(25) << “FRESHMAN”; else if (standing == SOPHOMORE) cout << endl << setw(25) << “SOPHOMORE”; else if (standing == JUNIOR) cout << endl << setw(25) << “JUNIOR”; else cout << endl << setw(25) << “SENIOR”;

return; }

8

Page 9: Enumeration Data Type

Private Method

Void DisplayStanding() { if (standing == FRESHMAN) cout << endl << setw(25) << “FRESHMAN”; else if (standing == SOPHOMORE) cout << endl << setw(25) << “SOPHOMORE”; else if (standing == JUNIOR) cout << endl << setw(25) << “JUNIOR”; else cout << endl << setw(25) << “SENIOR”;

return; }

9

Page 10: Enumeration Data Type

Method Write of Class StudentType

void Write() { cout << endl << setw(25) << id << endl << setw(25) << firstName << endl << setw(25) << lastName << endl << setw(25) << gpa;

DisplayStanding();

return; }

10

Page 11: Enumeration Data Type

enum Status {FRESHMAN, SOPHOMORE, JUNIOR, SENIOR};

class StudentType

{

private:

string id, firstName, lastName;

float gpa;

Status standing;

Status GetStanding()

void DisplayStanding()

public:

StudentType()

StudentType(string sid, string first, string last, float sgpa)

StudentType(const StudentType& s)

void Read()

void Write()

bool Equals(const StudentType& s)

// if (s1.Equals(s2))

. . .

}; 11

Page 12: Enumeration Data Type

Class SectionTypeconst int MAX_SIZE = 26;

enum Status {FRESHMAN, SOPHOMORE, JUNIOR, SENIOR};

class StudentType

{

. . .

};

class SectionType

{

private:

int numStudents;

StudentType students[MAX_SIZE];

public:

void Read()

. . .

};

12

Page 13: Enumeration Data Type

Class SectionTypeconst int MAX_SIZE = 26;

enum Status {FRESHMAN, SOPHOMORE, JUNIOR, SENIOR};

class StudentType

class SectionType

{

private:

int numStudents;

StudentType students[MAX_SIZE];

public:

void Read()

{

cin >> numStudents;

for (int i = 0; i < numStudents; i ++)

students[i].Read();

}

. . .

};13

Page 14: Enumeration Data Type

Class SectionTypeclass SectionType

{

private:

int numStudents;

StudentType students[MAX_SIZE];

public:

SectionType()

{

numStudents = 0;

}

void Read()

{

Student s(cin);

while ( cin )

{

students[numStudents] = s;

numStudents ++;

s = Student(cin);

}

}

. . .

}; 14

Page 15: Enumeration Data Type

Class SectionTypeclass SectionType

{

private:

int numStudents;

StudentType students[MAX_SIZE];

public:

void Read()

{

Student s(cin);

while ( cin )

{

students[numStudents ++] = s;

// same as

// students[numStudents] = s;

// numStudents ++;

s = Student(cin);

}

}

. . .

}; 15

Page 16: Enumeration Data Type

const int MAX_SIZE = 26;

enum Status {FRESHMAN, SOPHOMORE, JUNIOR, SENIOR};

class StudentType

class SectionType

int main()

{

SectionType CS143_S2;

CS143_S2.Read();

// Find the freshman student with the highest GPA among

// all freshman students in CS143_S2

}

16

Page 17: Enumeration Data Type

//-------------------------------------------------------// The function finds and returns the index of a Freshman // student who has the highest GPA among all Freshman // students in a section, assuming there is at least one // Freshman student in the section. // Parameter: ( in ) //-------------------------------------------------------int IndexOfMaxFreshmanGPA(const SectionType& sec) { int index; // Not 0! float maxGPA = 0.0;

for (int i = 0; i < sec.numStudents; i ++) if (sec.students[i].standing == FRESHMAN && sec.students[i].gpa > maxGPA) { index = i; maxGPA = sec.students[i].gpa; }

return index;}

17

Page 18: Enumeration Data Type

const int MAX_SIZE = 26;

enum Status {FRESHMAN, SOPHOMORE, JUNIOR, SENIOR};

class StudentType

class SectionType

int IndexOfMaxFreshmanGPA(const SectionType& sec);

int main()

{

SectionType CS143_S2;

CS143_S2.Read();

// Find the freshman student with the highest GPA among

// all freshman students in CS143_S2

int index = IndexOfMaxFreshmanGPA(CS143_S2);

cout << “The Freshman student with highest GPA ”

<< “ among all freshman students in Section 2 of CS143 ” ?

. . .

}

18

Page 19: Enumeration Data Type

Class SectionTypeclass SectionType

{

private:

int numStudents;

StudentType students[MAX_SIZE];

public: Student StudentWithMaxGPAByStatus(Status s) { int index; float maxGPA = 0.0;

for (int i = 0; i < numStudents; i ++) if (students[i].standing == s && students[i].gpa > maxGPA) { index = i; maxGPA = students[i].gpa; }

return students[index]; }

}; 19

Page 20: Enumeration Data Type

int main()

{

SectionType CS143_S2;

CS143_S2.Read();

// Find the freshman student with the highest GPA among

// all freshman students in CS143_S2

Student s = CS143_S2. StudentWithMaxGPAByStatus(FRESHMAN);

cout << “The Freshman student with highest GPA among all ”

<< “freshman students in Section 2 of CS143 is ”;

s.Write()

// Find the sophomore student with the highest GPA among

// all sophomore students in CS143_S2

Student s = CS143_S2. StudentWithMaxGPAByStatus(SOPHOMORE);

cout << “The sophomore student with highest GPA among all ”

<< “sophomore students in Section 2 of CS143 is ”;

s.Write()

. . .

}

20

Page 21: Enumeration Data Type

Schedule

Program 6

Required to work in Teams of two students

Sign up by 3 pm, Monday, May 2

Update Program 5

Using enum types.

21