#include "scores.h"

Scores::Scores(const double gr[], short cnt)
   : num_grades(cnt), max_grades(cnt), grades(nullptr)
{
    alloc(cnt);
    fill(gr);
}

void Scores::fill(const double gr[])
{
    for (short s = 0; s != num_grades; s++)
    {
        grades[s] = gr[s];
    }
    return;
}

Scores::Scores(const Scores & sc)
   : num_grades(sc.num_grades), max_grades(sc.max_grades), grades(nullptr)
{
    alloc(num_grades);
    fill(sc.grades);
}

Scores & Scores::operator=(const Scores & sc)
{
    if (this != &sc)
    {
        num_grades = sc.num_grades;
        alloc(num_grades);
        fill(sc.grades);
    }
    return *this;
}

double Scores::get_average(void) const
{
    double sum = 0.0;
    for (short s = 0; s != num_grades; s++)
    {
        sum += grades[s];
    }
    return (num_grades==0?sum:sum/num_grades);
}
