Форум программистов, компьютерный форум CyberForum.ru

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

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

классы - C++

11.08.2011, 14:26. Просмотров 2522. Ответов 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;
  }
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2011, 14:26     классы
Посмотрите здесь:

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

Не по теме:

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

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

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

Не по теме:

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

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

Не по теме:

на колени!

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

Добавлено через 1 минуту
если надо-то стану, это сам budda
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;
 
 
};
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
11.08.2011, 17:40  [ТС]     классы #15
извините за мою тупость, можете весь код показать, я как понял тут создали список спортсменов, нашли с наименьшим весом, а как это связать с производным классом Inform
LosAngeles
Заблокирован
11.08.2011, 17:56     классы #16
задание какой-то раздолбай придумывал:

Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
функция-друг, которая выведет информацию о самом легком спорстмене в команде,
почему друг?


Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
Производный класс Inform содержит следующие данные:
название неудачное. Унаследуй от Sportsman ProfessionalSportsman и добавь множество наград. Можно задуматься об иерархии наград - Award абстрактный класс с методом toString и полем даных date(дата награждения), от него унаследовать допустим OlympiadAward а от OlympiadAward - OlympiadGoldAward OlympiadSilverAward и тп. Тут короче полёт фантазии, сложно как то систематизировать награды
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
11.08.2011, 18:09  [ТС]     классы #17
насчет раздолбая согласен, а вот с наградами это уже перебор, их вообще не надо, мне надо только чтобы можно было ввести несколько спортсменов, а остальное по заданию
а можно подружить класс team и inform, с полетами фантазий многого не требуется, это ж просто тупая задача принцип которой "соответствовать условию"
Если нетяжело напишите пожалуйста код полностью, огромное Всем спасибо
easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
12.08.2011, 04:12     классы #18
Спортсмен в первом приближении
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#include <iostream>
#include <string>
#include <sstream>
#include <stdexcept>
#include <algorithm>
#include <iterator>
#include <set>
#include <ctime>
 
class Person {
    std::string sName;
    std::string sPatronymic;
    std::string sSurname;
    size_t      nAge;
    double      dGrowth;
    double      dWeight;
public:
    Person() : sName("Unknown"), sPatronymic("Unknown"), sSurname("Unknown"), nAge(0), dGrowth(0.0), dWeight(0.0) {}
    virtual ~Person() {}
    void Name(const std::string & name) { sName = name; }
    std::string Name() const { return sName; }
    void Patronymic(const std::string & patronymic) { sPatronymic = patronymic; }
    std::string Patronymic() const { return sPatronymic; }
    void Surname(const std::string & surname) { sSurname = surname; }
    std::string Surname() const { return sSurname; }
    virtual void Age(const size_t age) { nAge = age; }
    virtual size_t Age() const { return nAge; }
    virtual void Growth(const double growth) { dGrowth = growth; }
    virtual double Growth() const { return dGrowth; }
    virtual void Weight(const double weight) { dWeight = weight; }
    virtual double Weight() const { return dWeight; }
};
 
enum StateType { ST_BEGINNER = 0, ST_GTO_SIGN, ST_GAP_III, ST_GAP_II, ST_GAP_I, ST_CANDIDATE, ST_MASTER, ST_ALL_STATES };
const char * STATE_NAMES[ST_ALL_STATES] = { "Beginner", "GTO sign", "Gap III", "Gap II", "Gap I", "Master candidate", "Master of sport" };
 
const size_t MIN_AGE(16);
const size_t MAX_AGE(40);
const double MIN_GROWTH(150.0);
const double MAX_GROWTH(220.0);
const double MIN_WEIGHT(40.0);
const double MAX_WEIGHT(200.0);
 
const size_t MIN_YEAR(2000);
 
 
class Award {
    std::string sName;
    size_t nYear;
    void CheckYear() {
        if ( nYear < MIN_YEAR )
            throw ( std::runtime_error("Wrong year of award - before minimum possible.") );
        else {
            time_t tSeconds = time(NULL);
            struct tm * mDate = localtime(&tSeconds);
            if ( nYear > mDate->tm_year + 1900 )
                throw ( std::runtime_error("Wrong year of award - after current year.") );
        }
    }
 
public:
    Award(const std::string & name, const size_t year) : sName(name), nYear(year) { CheckYear(); }
    Award() : sName("Unknown"), nYear(MIN_YEAR) {}
    void Name(const std::string & name) { sName = name; }
    std::string Name() const { return sName; }
    void Year(const size_t year) { nYear = year; CheckYear(); }
    size_t Year() const { return nYear; }
};
 
struct AwardsByYear {
    bool operator () (const Award & a, const Award & b) { return a.Year() < b.Year(); }
};
 
std::ostream & operator << (std::ostream & ost, const Award & award) {
    ost << award.Year() << "\t" << award.Name();
    return ost;
}
 
class Sportsman : public Person {
    size_t nId;
    StateType nState;
    std::multiset<Award, AwardsByYear> cAwards;
public:
    Sportsman() : Person(), nId(0), nState(ST_BEGINNER), cAwards() {}
    virtual ~Sportsman() {}
    virtual size_t Age() const { return Person::Age(); }
    virtual void Age(size_t age) {
        if ( age < MIN_AGE )
            throw ( std::runtime_error("Too young.") );
        if ( age > MAX_AGE )
            throw ( std::runtime_error("Too old.") );
        Person::Age(age);
    }
    virtual double Growth() const { return Person::Growth(); }
    virtual void Growth(const double growth) {
        if ( growth < MIN_GROWTH )
            throw ( std::runtime_error("Too short.") );
        if ( growth > MAX_GROWTH )
            throw ( std::runtime_error("Too long.") );
        Person::Growth(growth);
    }
    virtual double Weight() const { return Person::Weight(); }
    virtual void Weight(const double weight) {
        if ( weight < MIN_WEIGHT )
            throw ( std::runtime_error("Too easy.") );
        if ( weight > MAX_WEIGHT )
            throw ( std::runtime_error("Too heavy.") );
        Person::Weight(weight);
    }
    void Id(const size_t id) { nId = id; }
    size_t Id() const { return nId; }
    void State(const StateType state) { nState = state; }
    StateType State() const { return nState; }
    std::string StateAsString() const { return std::string(STATE_NAMES[State()]); }
    void AddAward(const Award & award) { cAwards.insert(award); }
    std::string AwardsAsString() const {
        std::ostringstream ost;
        if ( cAwards.empty() )
            ost << "No awards.\n";
        else
            std::copy(cAwards.begin(), cAwards.end(), std::ostream_iterator<Award>(ost, "\n"));
        return ost.str();
    }
    std::string GetInfo() const {
        std::ostringstream ost;
        ost << "Name:       " << Name() << "\n";
        ost << "Patronymic: " << Patronymic() << "\n";
        ost << "Surname:    " << Surname() << "\n";
        ost << "Age:        " << Age() << "\n";
        ost << "Growth:     " << Growth() << "\n";
        ost << "Weight:     " << Weight() << "\n";
        ost << "ID:         " << Id() << "\n";
        ost << "State:      " << StateAsString() << "\n";
        ost << "Awards:\n"    << AwardsAsString() << std::endl;
        return ost.str();
    }
};
 
 
 
/* TEST */
int main(){
 
    Sportsman s;
 
    std::cout << "Default values:\n" << s.GetInfo();
 
    s.Name("Vasya");
    s.Patronymic("Petrovich");
    s.Surname("Pupkin");
    s.Age(25);
    s.Growth(180);
    s.Weight(90);
    s.Id(13);
    s.State(ST_MASTER);
    s.AddAward(Award("Zimbabve snowboard champ", 2008));
    s.AddAward(Award("Alyaska safari", 2006));
    s.AddAward(Award("Pekin kisses deadmatch", 2001));
 
    std::cout << "Updated values:\n" << s.GetInfo();
 
    return 0;
}
классы
Команду уже лень делать. Может сам всё-таки?
Vov4uk
Сообщений: n/a
12.08.2011, 19:16     классы #19
Народ помогите мне...я пока тока новичок..
Мне нужно написать класс Persona (персона). Класс хранит информацию о персональных данных определенного лица фамилия, имя, дату рождения и идентификационный код. Содержит соответствующие методы для доступа к полям класса и вычисления возраста человека.

Я тут немножко написал,но у меня появились проблемы с написанием методов,точнее не могу понять как ваше писать методы,помогите плз...буду оч признателен.
Ага и пишу это в VS C++ MFC

C++
1
2
3
4
5
6
7
8
9
class Person
{
public:
    CString name;
    CString surname;
    CString bdate;
    CString code;
    virtual ~Person(){
    };
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2011, 19:27     классы
Еще ссылки по теме:

Классы С++ C++
C++ Классы в С++
Классы C++ C++
C++ Классы
C++ Классы

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

Или воспользуйтесь поиском по форуму:
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
12.08.2011, 19:27  [ТС]     классы #20
Граждане, а почему нельзя просто сделать вот так?
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
83
84
85
86
87
88
89
90
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include <set.h>
 
class Team
{
    protected:
  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);
  ~Team()
  { delete[]Surname; delete[]Name; delete[]Patronymic; };
 
  const char *getSurname()const    { return Surname; };
  const char *getName()const       { return Name; };
  const char *getPatronymic()const { return Patronymic; };
  void Age   (int AGE)      {age=AGE;};
  void Growth(float GROWTH) {growth=GROWTH;};
  void Weight(float WEIGHT) {weight=WEIGHT;};
  int    Age()const    { return age; }
  double Growth()const { return growth; }
  double Weight()const { return weight; }
  friend class Inform;
  void printInform()
  {
    cout<<Surname<<' '<<Name<<' '<<Patronymic<<' '<<age<<' '<<growth<<' '<<weight<<endl;
  }
};
 
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;
}
 
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;
  }
  void Level_athlete(int LEVEL_ATHLETE) {level_athlete=LEVEL_ATHLETE;};
  int Level_athlete()const          { return level_athlete; }
  const char *getCategory()const    { return Category; };
  const char *getPrizewinner()const { return Prizewinner; };
 
};
 
struct WeightCompare
{
  bool operator()(const Inform &a,const Inform &b)
  { return a.Weight()<b.Weight(); }
};
 
int main()
{
  Inform *kolvo[3];
  kolvo[0]=new Inform("Petrovic","Bac9","prigh",12,88,100,2,"org","4hi");
  kolvo[1]=new Inform("erighii","eurighr","nj",12,45,78,2,"org","4hi");
  kolvo[2]=new Inform("gyerhgerhgierhgreh","rehgiihr","ngerig",12,56,465,2,"org","4hi");
  for(int i=0;i<3;i++)
  { kolvo[i]->printInform();  }
  for(int i=0;i<3;i++)
  { delete kolvo[i];  }
 
  multiset<kolvo[i],WeightCompare>team;
 
  getch();
}
а потом вывести результат
Yandex
Объявления
12.08.2011, 19:27     классы
Ответ Создать тему
Опции темы

Текущее время: 00:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru