Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.60 KB | None | 0 0
  1. /*
  2. Тело класса GradeBook
  3. */
  4.  
  5. #include <iostream>
  6. #include <iomanip>
  7. #include "grade_book.h"
  8. using namespace std;
  9.  
  10. GradeBook::GradeBook(string name, const int grades_array[])
  11. {
  12.   SetCourseName(name);
  13.  
  14.   for(int grade = 0; grade < students; grade++)
  15.   {
  16.     grades[grade] = grades_array[grade];
  17.   }
  18. }
  19.  
  20. void GradeBook::SetCourseName(string name)
  21. {
  22.   if(name.length() <= 25) // ограничиваем длину названия курса
  23.   {                       // 25 символами
  24.     course_name = name;
  25.   }
  26.   else
  27.   {
  28.     course_name = name.substr(0,25); // иначе сокращаем
  29.     cout << "Name is too long.\n"
  30.          << "Limiting course_name to first 25 characters." << endl;
  31.   }
  32. }
  33.  
  34. string GradeBook::GetCourseName()
  35. {
  36.   return course_name;
  37. }
  38.  
  39. void GradeBook::DisplayMessage()
  40. {
  41.   cout << "Welcome to the grade book for\n" << GetCourseName() << "!" << endl;
  42. }
  43.  
  44. void GradeBook::ProcessGrades()
  45. {
  46.   OutputGrades();
  47.  
  48.   cout << "\nClass average is " << setprecision(2)
  49.        << fixed << GetAverage() << endl;
  50.  
  51.   cout << "Lowest grade is " << GetMinimum()
  52.        << "\nHighest grade is " << GetMaximum() << endl;
  53.  
  54.   OutputBarChart();
  55. }
  56.  
  57. int GradeBook::GetMinimum()
  58. {
  59.   int low_grade = 100;
  60.  
  61.   for(int grade = 0; grade < students; grade++)
  62.   {
  63.     if(grades[grade] < low_grade)
  64.     {
  65.       low_grade = grades[grade];
  66.     }
  67.   }
  68.   return low_grade;
  69. }
  70.  
  71. int GradeBook::GetMaximum()
  72. {
  73.   int high_grade = 0;
  74.  
  75.   for(int grade = 0; grade < students; grade++)
  76.   {
  77.     if(grades[grade] > high_grade)
  78.     {
  79.       high_grade = grades[grade];
  80.     }
  81.   }
  82.   return high_grade;
  83. }
  84.  
  85. double GradeBook::GetAverage()
  86. {
  87.   int total = 0;
  88.  
  89.   for(int grade = 0; grade < students; grade++)
  90.   {
  91.     total += grades[grade];
  92.   }
  93.  
  94.   return static_cast<double>(total) / students;
  95. }
  96.  
  97. void GradeBook::OutputBarChart()
  98. {
  99.   cout << "\nGrade distribution:" << endl;
  100.  
  101.   const int frequency_size = 11;
  102.   int frequency[frequency_size] = {0};
  103.  
  104.   for(int grade = 0; grade < students; grade++)
  105.   {
  106.     frequency[grades[grade]/10]++;
  107.   }
  108.   for(int count = 0; count < frequency_size; count++)
  109.   {
  110.     if(count == 0)
  111.     {
  112.       cout << "  0-9: ";
  113.     }
  114.     else
  115.     {
  116.       if(count == 10)
  117.       {
  118.         cout << "  100: ";
  119.       }
  120.       else
  121.       {
  122.         cout << count * 10 << "-" << (count * 10) + 9 << ": ";
  123.       }
  124.     }
  125.  
  126.     for(int stars = 0; stars < frequency[count]; stars++)
  127.     {
  128.       cout << '*';
  129.     }
  130.     cout << endl;
  131.   }
  132. }
  133.  
  134. void GradeBook::OutputGrades()
  135. {
  136.   cout << "\nThe grades are:\n\n";
  137.  
  138.   for(int student = 0; student < students; student++)
  139.   {
  140.     cout << "Student " << setw(2) << student + 1 << ": "
  141.          << setw(3) << grades[student] << endl;
  142.   }
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement