// studentc.cpp -- třída Student s použitím kompozice
#include "studentc.h"
using std::ostream;
using std::endl;
using std::istream;
using std::string;

//veřejné metody
double Student::Average() const
{
	if (scores.size() > 0)
		return scores.sum()/scores.size();
	else
		return 0;
}

const string & Student::Name() const
{
	return name;
}

double & Student::operator[](int i)
{
	return scores[i]; // použití valarray<double>::operator[]()
}

double Student::operator[](int i) const
{
	return scores[i];
}

// soukromá metoda
ostream & Student::arr_out(ostream & os) const
{
	int i;
	int lim = scores.size();
	if (lim > 0)
	{
		for (i = 0; i < lim; i++)
		{
			os << scores[i] << " ";
			if (i % 5 == 4)
				os << endl;
		}
		if (i % 5 != 0)
			os << endl;
	}
	else
		os << " prazdne pole ";
	return os;
}

// přátelé

// použití řetězcové verze funkce operator>>()
istream & operator>>(istream & is, Student & stu)
{
	is >> stu.name;
	return is;
}

// použití přítele třídy string getline(ostream &, const string &)
istream & getline(istream & is, Student & stu)
{
	getline(is, stu.name);
	return is;
}

// použití verze třídy string funkce operator<<()
ostream & operator<<(ostream & os, const Student & stu)
{
	os << "Vysledky " << stu.name << ":\n";
	stu.arr_out(os); // use private method for scores
	return os;
}
