Представление информации (данных об участниках спортивного соревнования: фамилия, фамилия тренера и результат) в виде класса

Страницы работы

5 страниц (Word-файл)

Содержание работы

кафедра 304

Лабораторнаяработа № 6

по дисциплине «Программирование»

Выполнил студент315гр.

Тыщенко А.С.

Провериладоц. каф.304

Бакуменко Н.С.

________________________

Тема: «Классы по требованиям»

Цельработы:
            Изучить теоретический и практический материал по теме.

Постановка задачи:

1.  Должна содержать, по крайней мере, два класса – первый, описывающий  поля Вашего класса, согласно заданию, а второй – содержащий массив из элементов первого класса.

2.  Каждый из классов должен иметь, по крайней мере, один конструктор. Если класс содержит указатели, то и деструктор.

3.  Все поля каждого класса должны быть описаны как private

4.  Для каждого класса необходимо реализовать  - переопределить операции ввода-вывода <<  и >>, например, как дружественные функции.

5.  Методы класса, которые решаю т задачи Вашего варианта, не должны что-то выводить на печать, в файл, а также получать информацию непосредственно из файла (кроме операций <<  и >>). Исходные данные – поля класса и параметры, результаты – поля класса, параметры и возвращение результата через return.

6.   Текст программы должен содержать, пусть минимальные, спецификации – комментарии.

7.  Для своего класса (классов) переопределить какую-нибудь операцию (операции). По возможности операции должны быть полезными при выполнении заданий Вашего варианта.

Условие:

Участник спортивного соревнования: фамилия, фамилия тренера и результат.
Найти: средний результат; всех воспитанников заданного тренера.

Текст программы:

Member.h

#pragma once

#include <string>

#include <iostream>

using namespace std;

class CMember

{

public:

       CMember(void); // конструктор

       int GetResult(); // отображение результата

       void Trener(string s); // вывод фамилии участника

       friend ostream & operator << (ostream & st, CMember & a); // перегрузка операции вывода

       friend istream & operator >> (istream & st, CMember & a ); // перегрузка операции ввода

       ~CMember(void); // деструктор по умолчанию

private:

       string surname; // фамилия участника

       string tutor;  // фамилия тренера

       int result; // средний результат учасника

};

Member.cpp

#include "StdAfx.h"

#include "Member.h"

#include <iostream>

using namespace std;

CMember::CMember(void) // конструктор

{

       surname = "" ; tutor = "";  result = 0;

}

int CMember::GetResult() // отображение результата

{

       return result;

}

void CMember::Trener(string s) // вывод фамилии участника

{

       if(s==tutor)

             cout<<surname<<endl;

}

istream & operator >> (istream & st, CMember & a ) // перегрузка операции ввода

{

       cout<<"Введите имя участника:"<<endl;

       st>>a.surname;// имя участника

       cout<<"Введите фамилию тренера участника:"<<endl;

       st>>a.tutor;// фамилия тренера

       cout<<"Введите результат участника = ";

       st>>a.result;// результат участника

       cout<<endl;

       return st; // возращение

}

ostream & operator << (ostream & st, CMember & a) // перегрузка операции вывода

{

       st<<a.surname<<"    "<<a.tutor<<"    "<<a.result<<endl;

             return st;

}

CMember::~CMember(void) // деструктор по умолчанию

{

}

MassMember.h

#pragma once

#include "member.h"

#include <iostream>

using namespace std;

const int max_n=40; // максимальное количество участников

class CMassMember

{

public:

       CMassMember(void);//конструктор

       double SredResult(); // средний результат участников

       void Trener(string s); // вывод всех спортсменов данного тренера

       CMember & operator [] (int i); // 

       friend ostream & operator << (ostream & st, CMassMember & rez );

       friend istream & operator >> (istream & inf, CMassMember & rez );

       ~CMassMember(void);// деструктор

private:

       CMember A[max_n]; // создаем массив типа CMember

        int num_sl; // реальное количество участников

};

MassMember.cpp

#include "StdAfx.h"

#include "MassMember.h"

#include <iostream>

using namespace std;

CMassMember::CMassMember(void) //конструктор по умолчанию

{

}

CMember & CMassMember::operator [] (int i)

{

       return  A[i];

}

ostream & operator << (ostream & st, CMassMember & rez ) // перегрузка операции вывода

{

       st<<rez.num_sl<<endl;

       for(int i=0; i<rez.num_sl; ++i)

             st<<rez[i];

       return st;

}

istream & operator >> (istream & inf, CMassMember & rez ) // перегрузка операции вывода

{

       cout<<"Введите какое количество участников будет(макс 40) = ";

             inf>>rez.num_sl;

       for(int i=0; i<rez.num_sl; ++i)

             inf>>rez[i];

       return inf;

}

double CMassMember::SredResult() // ф-я считающая средний результат участников

{

       double p=0;

       int s=0;

       for(int i=0;i<num_sl;i++)

             s+=A[i].GetResult();

       p=double(s)/double(num_sl);

       return p;

}

void CMassMember::Trener(string s) // ф-я находит всех спортсменов заданого тренера и  выводит на екран

{

       cout<<"Все спортсмены данного тренера:"<<endl;

       for(int i=0;i<num_sl;i++) // цикл для реализации записи

             A[i].Trener(s);

}

CMassMember::~CMassMember(void) // деструктор по умолчанию

{

}

Lab4.cpp

//  Lab4.cpp: определяет точку входа для консольного приложения.

//

#include "stdafx.h"

#include "Member.h"

#include "MassMember.h"

#include <string>

#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

       setlocale(LC_ALL,"RUS");

       CMassMember B; // данные о

       string S; //переменная для

       cin>>B; // заполняем массив

       cout<<B; // выводим массив для проверки

       cout<<"Средний результат = "<<B.SredResult()<<endl; // вызываем функцию для нахождения среднего результата

       cout<<"Введите имя тренера: ";

       cin>>S; // ввод имени тренера для нахождения его спортсменов

       B.Trener(S); // вывод участников данного тренера

       system("pause >> null");

       return 0;

}

Результат:

Выводы:

Я разобрался с теоретическим и практическим материалом по данной теме.

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
77 Kb
Скачали:
0