75 lines
1.6 KiB
C++
75 lines
1.6 KiB
C++
// studenti.cpp -- Student class using private inheritance
|
|
#include "studenti.h"
|
|
using std::ostream;
|
|
using std::endl;
|
|
using std::istream;
|
|
using std::string;
|
|
|
|
// public methods
|
|
double Student::Average() const
|
|
{
|
|
if (ArrayDb::size() > 0)
|
|
return ArrayDb::sum()/ArrayDb::size();
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
const string & Student::Name() const
|
|
{
|
|
return (const string &) *this;
|
|
}
|
|
|
|
double & Student::operator[](int i)
|
|
{
|
|
return ArrayDb::operator[](i); // use ArrayDb::operator[]()
|
|
}
|
|
|
|
double Student::operator[](int i) const
|
|
{
|
|
return ArrayDb::operator[](i);
|
|
}
|
|
|
|
// private method
|
|
ostream & Student::arr_out(ostream & os) const
|
|
{
|
|
int i;
|
|
int lim = ArrayDb::size();
|
|
if (lim > 0)
|
|
{
|
|
for (i = 0; i < lim; i++)
|
|
{
|
|
os << ArrayDb::operator[](i) << " ";
|
|
if (i % 5 == 4)
|
|
os << endl;
|
|
}
|
|
if (i % 5 != 0)
|
|
os << endl;
|
|
}
|
|
else
|
|
os << " empty array ";
|
|
return os;
|
|
}
|
|
|
|
// friends
|
|
// use String version of operator>>()
|
|
istream & operator>>(istream & is, Student & stu)
|
|
{
|
|
is >> (string &)stu;
|
|
return is;
|
|
}
|
|
|
|
// use string friend getline(ostream &, const string &)
|
|
istream & getline(istream & is, Student & stu)
|
|
{
|
|
getline(is, (string &)stu);
|
|
return is;
|
|
}
|
|
|
|
// use string version of operator<<()
|
|
ostream & operator<<(ostream & os, const Student & stu)
|
|
{
|
|
os << "Scores for " << (const string &) stu << ":\n";
|
|
stu.arr_out(os); // use private method for scores
|
|
return os;
|
|
}
|