Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Тело класса GradeBook
- */
- #include <iostream>
- #include <iomanip>
- #include "grade_book.h"
- using namespace std;
- GradeBook::GradeBook(string name, const int grades_array[])
- {
- SetCourseName(name);
- for(int grade = 0; grade < students; grade++)
- {
- grades[grade] = grades_array[grade];
- }
- }
- void GradeBook::SetCourseName(string name)
- {
- if(name.length() <= 25) // ограничиваем длину названия курса
- { // 25 символами
- course_name = name;
- }
- else
- {
- course_name = name.substr(0,25); // иначе сокращаем
- cout << "Name is too long.\n"
- << "Limiting course_name to first 25 characters." << endl;
- }
- }
- string GradeBook::GetCourseName()
- {
- return course_name;
- }
- void GradeBook::DisplayMessage()
- {
- cout << "Welcome to the grade book for\n" << GetCourseName() << "!" << endl;
- }
- void GradeBook::ProcessGrades()
- {
- OutputGrades();
- cout << "\nClass average is " << setprecision(2)
- << fixed << GetAverage() << endl;
- cout << "Lowest grade is " << GetMinimum()
- << "\nHighest grade is " << GetMaximum() << endl;
- OutputBarChart();
- }
- int GradeBook::GetMinimum()
- {
- int low_grade = 100;
- for(int grade = 0; grade < students; grade++)
- {
- if(grades[grade] < low_grade)
- {
- low_grade = grades[grade];
- }
- }
- return low_grade;
- }
- int GradeBook::GetMaximum()
- {
- int high_grade = 0;
- for(int grade = 0; grade < students; grade++)
- {
- if(grades[grade] > high_grade)
- {
- high_grade = grades[grade];
- }
- }
- return high_grade;
- }
- double GradeBook::GetAverage()
- {
- int total = 0;
- for(int grade = 0; grade < students; grade++)
- {
- total += grades[grade];
- }
- return static_cast<double>(total) / students;
- }
- void GradeBook::OutputBarChart()
- {
- cout << "\nGrade distribution:" << endl;
- const int frequency_size = 11;
- int frequency[frequency_size] = {0};
- for(int grade = 0; grade < students; grade++)
- {
- frequency[grades[grade]/10]++;
- }
- for(int count = 0; count < frequency_size; count++)
- {
- if(count == 0)
- {
- cout << " 0-9: ";
- }
- else
- {
- if(count == 10)
- {
- cout << " 100: ";
- }
- else
- {
- cout << count * 10 << "-" << (count * 10) + 9 << ": ";
- }
- }
- for(int stars = 0; stars < frequency[count]; stars++)
- {
- cout << '*';
- }
- cout << endl;
- }
- }
- void GradeBook::OutputGrades()
- {
- cout << "\nThe grades are:\n\n";
- for(int student = 0; student < students; student++)
- {
- cout << "Student " << setw(2) << student + 1 << ": "
- << setw(3) << grades[student] << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement