С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
#1

классы - C++

11.08.2011, 14:26. Просмотров 2773. Ответов 35
Метки нет (Все метки)

Всем привет!
Есть такое задание:
Создайте программу с классом Team, который включает в себя следующие данные об участниках спортивных соревнований: ФИО игрока, игровой номер, возраст, рост, вес.
В класс входят следующие элементы-функции:
конструктор с параметрами,
деструктор,
функция просмотра текущего состояния объектов PRINT();
функция-друг, которая выведет информацию о самом легком спорстмене в команде,
виртуальная функция просмотра текущего объекта print().
Производный класс Inform содержит следующие данные:
разряд спортсмена,
категория (кандидат, мастер и т.д.),
призер (Европа, мир и т.д.),
переопределенную функцию просмотра состояния объектов.
На всякий случай выкидываю код (спссибо модераторам), для ввода нескольких спортсменов,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream.h>
#include <string>
#include <set.h>
#include <conio.h>
 
class Sportsmen
{
    private:
  string strName;
  string strPatronymic;
  string strSurname;
  int iAge;
  double dGrowth;
  double dWeight;
    public:
  void Name      (const string &n) { strName=n; }
  void Patronymic(const string &p) { strPatronymic=p; }
  void Surname   (const string &s) { strSurname=s; }
  string Name()const       { return strName; }
  string Patronymic()const { return strPatronymic; }
  string Surname()const    { return strSurname; }
  void Age(int a)       { iAge=a; }
  void Growth(double g) { dGrowth=g; }
  void Weight(double w) { dWeight=w; }
  int Age()const       { return iAge; }
  double Growth()const { return dGrowth; }
  double Weight()const { return dWeight; }
};
 
istream &operator>>(istream &ist,Sportsmen &s)
{
  string n,p,sn;
  int a;
  double g,w;
  ist>>n>>p>>sn>>a>>g>>w;
  s.Name(n);
  s.Patronymic(p);
  s.Surname(sn);
  s.Age(a);
  s.Growth(g);
  s.Weight(w);
  return ist;
}
 
ostream &operator<<(ostream &ost,const Sportsmen &s)
{
  ost<<"Name:       "<<s.Name()<<"\n"
     <<"Patronymic: "<<s.Patronymic()<<"\n"
     <<"Surname:    "<<s.Surname()<<"\n"
     <<"Age:        "<<s.Age()<<"\n"
     <<"Growth:     "<<s.Growth()<<"\n"
     <<"Weight:     "<<s.Weight()<<endl;
  return ost;
}
 
struct WeightCompare
{
  bool operator()(const Sportsmen &a,const Sportsmen &b)
  { return a.Weight()<b.Weight(); }
};
 
int main()
{
  Sportsmen s;
  multiset<Sportsmen,WeightCompare>team;
  size_t count;
  cout<<"Number of sportsmens in team: ";
  cin>>count;
  while(count--)
  {
    cout<<"Name Patronymic Surname Age Growth Weight:"<<endl;
    if(!(cin>>s))
    {
      cerr<<"Shit!"<<endl;
      return 1;
    }
    team.insert(s);
  }
  cout<<"\nThe first easiest:\n"<<*(team.begin())<<endl;
  getch();
  return 0;
}
Заранее спасибо, на всякий случай швырну еще черновик
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include<iostream.h>
#include<conio.h>
#include<string.h>
 
class Team
{
    private:
  char *Surname;
  char *Name;
  char *Patronymic;
  int age;
  float growth;
  float weight;
 
    public:
  Team(const char *Surname,const char *Name,const char *Patronymic,int age,float growth,float weight);
  void print() const;
  ~Team();
  const char *getSurname()const;
  const char *getName()const;
  const char *getPatronymic()const;
};
 
Team::Team(const char *SURNAME,const char* NAME,const char *PATRONYMIC,int AGE,float GROWTH,float WEIGHT)
{
  Surname=new char[strlen(SURNAME)+1];
  strcpy(Surname,SURNAME);
  Name=new char[strlen(NAME)+1];
  strcpy(Name,NAME);
  Patronymic=new char[strlen(PATRONYMIC)+1];
  strcpy(Patronymic,PATRONYMIC);
  age=AGE;
  growth=GROWTH;
  weight=WEIGHT;
}
 
void Team::print()const
{ cout<<Surname<<' '<<Name<<' '<<Patronymic; }
 
Team::~Team()
{
  delete[]Surname;
  delete[]Name;
  delete[]Patronymic;
}
 
const char *Team::getSurname()const
{ return Surname; }
 
const char *Team::getName()const
{ return Name; }
 
const char *Team::getPatronymic()const
{ return Patronymic; }
 
class Inform:public Team
{
    private:
  int Level_athlete;
  char *Category;
  char *Prizewinner;
    public:
  Inform(const char *SURNAME,const char* NAME,const char *PATRONYMIC,int AGE,float GROWTH,float WEIGHT,
         int LEVEL_ATHLETE,char *CATEGORY,char *PRIZEWINNER):
         Team(SURNAME,NAME,PATRONYMIC,AGE,GROWTH,WEIGHT)
  {
    Level_athlete=LEVEL_ATHLETE;
  }
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2011, 14:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос классы (C++):

Непонятна тема (Классы содержащие другие классы, как данные члены ) - C++
Изучаю книгу Джесс Либерти(в частности эту главу в данный момент) #include &lt;iostream&gt; class Point { public: void SetX(int...

Программа по классам, которая использует классы точек и прямых на плоскости, а, возможно, и другие классы - C++
Нужно написать программу, которая использует классы точек и прямых на плоскости, а, возможно, и другие классы. Реализовать её нужно в трех...

Наследование, базовые классы и производные классы - C++
Добрый вечер.Задание: необходимо разработать поля и методы наследуемые из базового класса и собственные компоненты производных...

Классы и наследование (Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию вычисления объёма.) - C++
Уважаевые, помогите написать прожку на экзамене: Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию...

Классы возможностей(Mixin классы) - C++
Не могу понять смысла использования mixin классов( это класс в котором есть только методы и нет членов-данных) Т.е. к примеру у нас...

Классы, включающие другие классы - C++
Столкнулся вот с таким кодом: #include &lt;iostream&gt; class Point { public: void SetX(int x) {itsX = x;} void SetY(int y) ...

35
LosAngeles
Заблокирован
11.08.2011, 14:27 #2
жирным выдели где тут вопрос, я бегло прочитал не нашёл
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
11.08.2011, 14:40  [ТС] #3
Да тут как-то и вопросов нет, прошу банальной помощи, чтобы сразу несколько спортсменов можно было вводить в этом задании
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
С[B]оздайте программу с классом Team, который включает в себя следующие данные об участниках спортивных соревнований: ФИО игрока, игровой номер, возраст, рост, вес.
В класс входят следующие элементы-функции:
конструктор с параметрами,
деструктор,
функция просмотра текущего состояния объектов PRINT();
функция-друг, которая выведет информацию о самом легком спорстмене в команде,
виртуальная функция просмотра текущего объекта print().
Производный класс Inform содержит следующие данные:
разряд спортсмена,
категория (кандидат, мастер и т.д.),
призер (Европа, мир и т.д.),
переопределенную функцию просмотра состояния объектов.
1
Paporotnik
11.08.2011, 14:50
  #4

Не по теме:

какая-то странная иерархия классов... не проще было попросить создать класс "спортсмен" со всеми параметрами, а в классе Team хранить список объектов класса "спортсмен"?

1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
11.08.2011, 14:53  [ТС] #5
Если кому нетяжело можете свои варианты написать, во всяком случае спасибо всем за помощь, только надо придерживаться этого задания, еще раз спасибо всем
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,866
11.08.2011, 15:06 #6
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
свои варианты написать
Базовый класс Person - имя, фамилия, рост, вес, размер обуви. Производный класс Sportsmen + вид спорта + разряд. Класс-контейнер Team - содержит список/массив спортсменов + название и вид спорта (к примеру КМС по боксу вполне может и плавать неплохо )
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
призер (Европа, мир и т.д.)
А вот с этим тоже засада - призов много может быть. Снова массив нужен? Да и разрядником спортсмен тоже может по разным видам спорта быть...
Но как бы там ни было, сравните с тем, как у Вас задумывалось...
Вообще с призами правильнее отдельную таблицу делать с указанием по годам, какой приз кто забрал. А в команду ещё количество побед/поражений в текущем сезоне можно добавить...
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
11.08.2011, 15:18  [ТС] #7
easybudda, огромное Вам спасибо, я понимаю что заданее бредовое (насчет видов спорта я с Вами согласен), но по ходу тут имели ввиду, что вся команда занимается одним видом спорта

Добавлено через 2 минуты
например, футболом
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,866
11.08.2011, 16:09 #8
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
например, футболом
Да хоть шашками, сути не меняет. Название и учёт побед/поражений всё равно неплохо бы сделать.
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
11.08.2011, 16:18  [ТС] #9
easybudda, извините конечно ели покажусь наглым, а можете написать код, заранее огромное спасибо Вам
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,866
11.08.2011, 16:27 #10

Не по теме:

Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
а можете написать код
Могу, наверное, проверять не хочется...

Класс спортсмена я уже писал в другой теме (кстати, незачем по одной задаче плодить по три-четыре темы), переименуйте его в Person, ну а дальше по вышеописанной схеме...
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
11.08.2011, 16:38  [ТС] #11
О всемогущий easybudda , признаю свою ошибку, извините, помогите пожалуйста, мне не горит, во всяком случае поклон Вам до земли за доброту Вашу, если сможете, то напишите, еще раз огромное Вам спасибо
у меня загвоздка с этой виртуальной функцией
стократное сапсибо что потратили на меня свое время
0
PointsEqual
11.08.2011, 16:42
  #12

Не по теме:

на колени!

0
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
11.08.2011, 16:44  [ТС] #13
извините, проблема с дружественной функцией

Добавлено через 1 минуту
если надо-то стану, это сам budda
0
LosAngeles
Заблокирован
11.08.2011, 17:23 #14
gfhfjhgjh
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
class Sportsman
{
public:
 
    typedef short int Age;
    typedef short int Weight;
    typedef short int Height;
 
    Sportsman(string aName, string aSurname, Age anAge = 0, Weight aWeight = 0, Height aHeight = 0) :
            name(aName),
            surname(aSurname),
            age(anAge),
            weight(aWeight),
            height(aHeight)
            { };
    //Sportsman() = deleted;
    //Sportsman(Sportsmen const&) = default;
    virtual ~Sportsman()
    {
 
    };
 
    //Sportsman& operator=(Sportsman const&) = default;
    bool operator==(Sportsman const& other) const
    {
        return ( surname == other.surname 
            && name == other.name);
    }
    bool operator<(Sportsman const& other) const
    {
        return (surname < other.surname);
    }
 
    string getName() const { return name; }
    string getSurname() const { return surname; }
    Age getAge() const { return age; }
    Weight getWeight() const { return weight; }
    Height getHeight() const { return height; }
 
    void setName(string const& newName) { name = newName; }
    void setSurname(string const& newSurname) { surname = newSurname; }
    void setAge(Age newAge) { age = newAge; }
    void setWeight(Weight newWeight) { weight = newWeight; }
    void setHeight(Height newHeight) { height = newHeight; }
 
private:
    string  name;
    string  surname;
    Age     age;
    Weight  weight;
    Height  height;
 
};
 
 
class Team
{
public:
 
    void add(Sportsman const& aSportsman) { team.insert(aSportsman); }
    bool remove(string const& aName, string const& aSurname)
    {
        return team.erase(Sportsman(aName, aSurname));
    }
    bool find(string const& aName, string const& aSurname) const
    {
        return team.count(Sportsman(aName, aSurname));
    }
 
private:
    set<Sportsman> team;
 
 
};
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
11.08.2011, 17:40  [ТС] #15
извините за мою тупость, можете весь код показать, я как понял тут создали список спортсменов, нашли с наименьшим весом, а как это связать с производным классом Inform
0
11.08.2011, 17:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2011, 17:40
Привет! Вот еще темы с ответами:

классы/дочерние классы/методы - C++
помогите пожалуйста! надо что выводились только учебеники. чтоб былo через GetTip. h файл class Book { protected: char...

Динамические массивы структур;Классы. Класс массивы структур;Классы. Класс динамического массива структур. - C++
Здраствуйте.Помогите с практичкой мое задание 4.3. Строка таблицы данных содержит следующую информацию о владельцах авто: ф.и.о....

КЛАССЫ - C++
Очень нужна помощь!!! подскажите где ошибки: #include &lt;iostream&gt; #include &lt;windows.h&gt; char* Rus(const char* text); using...

Классы в С++ - C++
Ребята, помогите пожалуйста. Я новичок в программировании, а сессия заканчивается. Нужно привести пример класса (С++): описание класса,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.