Добавил:
Oksana
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
//включаем необходимые заголовочные файлы
#include "iostream"
#include "group.h"
#include "stdlib.h"
#include "string.h"
//конструктор объекта Group
Group::Group(int Size)
{
//инициализируем данные
size = Size;
persons = new Person[size]; //выделяем динамическую память под массив
}
//деструктор класса
Group::~Group()
{
delete [] persons; //освобождаем память, занимаемую массивом
}
//функция вывода данных на экран
void Group::Print()
{
//в цикле выводим все записи массива на экран
for (int i = 0; i < size; i++)
persons[i].Print(); //вызываем функцию объекта Person
}
//функция заносящая объект man типа Person в i-ый элемент массива
void Group::PutPerson(int i, Person &man)
{
persons[i] = man;
}
//функция, возвращающая все данные объекта типа Person из i-го элемента массива
Person &Group::GetPerson(int i)
{
return(persons[i]);
}
//функция, возвращающая средний возраст людей в группе
double Group::Age()
{
double agesum = 0;
//в цикле суммируем возраст людей
for (int i = 0; i < size; i++)
agesum += persons[i];
agesum /= size;
return(agesum);
}
//функция, возвращающая средний возраст людей в группе,
//возраст которых не больше limit
double Group::Age(int limit)
{
double agesum = 0;
int num = 0;
//в цикле суммируем возраст людей
for (int i = 0; i < size; i++) {
double age = persons[i];
if (age < limit) {
agesum += age;
num ++;
}
}
agesum /= num;
return(agesum);
}
//оператор индексирования
Person &Group::operator[](int i)
{
return(persons[i]);
}
//конструктор класса
GroupX::GroupX(int Size, char Group_name[30], char Group_leader[30]) :
Group(Size)
{
strcpy(group_name, Group_name);
strcpy(group_leader, Group_leader);
}
//функция вывода данных на экран
void GroupX::Print()
{
std::cout << "Group name: " << group_name << std::endl;
std::cout << "Group leader: "<< group_leader << std::endl;
std::cout << "Group members: " << Group::Size() << std::endl;
Group::Print();
}