Upload
prince-richard
View
223
Download
1
Embed Size (px)
Citation preview
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
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
Enumeration Data Type
Operations on enum type
assignment
comparison
Function return value
Function parameters: &
No Input/Output!
3
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
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
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
Method Read of Class StudentType
void Read() { cin >> id >> firstName >> lastName >> gpa;
standing = GetStanding();
return; }
7
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
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
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
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
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
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
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
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
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
//-------------------------------------------------------// 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
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
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
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