кафедра 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;
}
Результат:
Выводы:
Я разобрался с теоретическим и практическим материалом по данной теме.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.