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

Реализация сравнения данных в массиве в классах - C++

Восстановить пароль Регистрация
 
JaEvg
 Аватар для JaEvg
1 / 1 / 0
Регистрация: 23.09.2010
Сообщений: 31
17.04.2011, 13:34     Реализация сравнения данных в массиве в классах #1
Прошу нравоучения наверн, как организовать можно сравнение веса(weight) спортсменов и вывод в конце программы самого лёгкого.. с массивами туго

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
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
 
char bufRus [256];
char* Rus(char* mes)
 { CharToOem (mes, bufRus);
   return bufRus;
 }
 
//базовый класс "участник соревнований"
class Participate
{ protected:
   string FIO;//ФИО
   int age; //возраст
   int height;//рост
   int weight; //вес
  public:
   Participate();
   virtual ~ Participate(){}
   virtual void Display();//вывод инфы о участнике
   friend float TheBest(Participate p);
};
float TheBest(Participate p)
{
//функция определения самого лёгкого спортсмена(и обязательно дружественная
}
Participate::Participate()
  { //добавление нового участника
   cout << Rus("\nФ.И.О.:"); cin >>FIO;
   cout << Rus("\nВозраст:"); cin >> age;
   cout << Rus("\nРост:"); cin >> height;
   cout << Rus("\nВес:"); cin >> weight;
   }
  void Participate:: Display()
    { cout << Rus("\nУчастник соревнований: ");
      cout << Rus("\nФ.И.О.: ")<< FIO;
      cout << Rus("\nВозраст: ") << age;
      cout << Rus("\nРост: ") << height;
      cout << Rus("\nВес: ") << weight;
      }
  //производный класс "участник по плаванию"
  class Swim : public  Participate
   { protected:
       int timer;//время
     public:
       Swim();
       virtual ~ Swim(){}
       virtual void Display(); //вывод описания 
    };
  Swim::Swim()
  { //ввод результирующего времени
   cout << Rus("\nВведите результирующее время: "); cin >> timer;
   }
 void Swim::Display()
  {
      cout << Rus("\nУчастник соревнования по плаванию: ");
      cout << Rus("\nФ.И.О.: ")<< FIO;
      cout << Rus("\nВозраст: ") << age;
      cout << Rus("\nРост: ") << height;
      cout << Rus("\nВес: ") << weight;
      cout << Rus("\nРезультирующее время: ") << timer;
  }
// производный класс "участник по стрельбе"
  class Gun : public  Participate
   { protected:
      int bal; //набранные баллы
     public:
       Gun();
       virtual ~ Gun(){}
       virtual void Display();//вывод описания
    };
  Gun::Gun():Participate()
  { //ввод набранных баллов
   cout << Rus("\nНабранные баллы: ");  cin >> bal;
   }     
 void Gun::Display()
 { cout << Rus("\nУчастник соревнования по стрельбе: ");
      cout << Rus("\nФ.И.О.: ")<< FIO;
      cout << Rus("\nВозраст: ") << age;
      cout << Rus("\nРост: ") << height;
      cout << Rus("\nВес: ") << weight;
      cout << Rus("\nНабранные баллы: ") << bal << "\n";
  }
int main()
{ int nMenu, flag = 1, kol;
  int k = 0; //индекс нового участника
  Participate* p[100];
  cout <<Rus("\nКоличество участников: ");cin >> kol;
  while(k < kol && flag)
   { // вывод пунктов меню
     cout<<Rus("\nНовый участник. Введите: ") << endl;
     cout<<Rus("1-участник по плаванию, 2-участник по стрельбе, 3-выход\n");
      cin >> nMenu;
     switch (nMenu)
      { case 1 : p[k++] = new Swim(); break;
        case 2 : p[k++] = new Gun(); break;
        default : flag = 0; break;
      }  
    }
 cout << Rus("\n\n\n!!!!!!!!!!!!!!!!!!!!!!!!Самый лёгкий спортсмен!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
 
//вывод того самого спорсмена
 
  cout << Rus("\n\n\n------------------------Полный список------------------------------\n");
  // вывод описаний
  for (int id = 0; id < kol; id++)
   {
 
     p[id]->Display();
     cout << "\n_______________________________________________________________\n\n";
     delete p[id];
    }
  getch();
  return 0;
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2011, 13:34     Реализация сравнения данных в массиве в классах
Посмотрите здесь:

Реализация операции сравнения для длинных чисел C++
C++ Преобразование типов данных в классах
C++ Проблема сравнения данных в массиве с другими данными
Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе C++
Структуры данных. Написать программу, позволяющую определить, есть ли в школе в каких-либо классах однофамильцы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
17.04.2011, 13:58     Реализация сравнения данных в массиве в классах #2
C++
1
2
3
4
5
6
7
8
float TheBest(Participate* p, size_t sz)
{
    float weight = p[0].weight;
    for(int i=1; i<sz; ++i)
      if(p[i].weight < weight)
         weight = p[i].weight;
    return weight;
}
В классе прототип функции тоже измени.
JaEvg
 Аватар для JaEvg
1 / 1 / 0
Регистрация: 23.09.2010
Сообщений: 31
17.04.2011, 14:29  [ТС]     Реализация сравнения данных в массиве в классах #3
Цитата Сообщение от ForEveR Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
float TheBest(Participate* p, size_t sz)
{
    float weight = p[0].weight;
    for(int i=1; i<sz; ++i)
      if(p[i].weight < weight)
         weight = p[i].weight;
    return weight;
}
В классе прототип функции тоже измени.
Спасибо.
А как можно реализовать вывод всей информации о этом лёгком спортсмене?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
17.04.2011, 14:54     Реализация сравнения данных в массиве в классах #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Participate TheBest(Participate* p, size_t sz)
{
    Participate min;
    double weight = p[0].weight;
    min = p[0];
    for(size_t i=1; i<sz; ++i)
      if(p[i].weight < weight)
      {
         weight = p[i].weight;
         min = p[i];
      }
    return min;
}
Вернется конкретный объект этой структуры. Его и выводи.
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,693
17.04.2011, 15:09     Реализация сравнения данных в массиве в классах #5
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
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
/////////////////////////////////////////////////////////////////////////////////////////
using namespace std;
/////////////////////////////////////////////////////////////////////////////////////////
//базовый класс "участник соревнований"
/////////////////////////////////////////////////////////////////////////////////////////
class Participate
{ 
protected:
    T_str  FIO;    //ФИО
    int    age;    //возраст
    int    height; //рост
    int    weight; //вес
 
public:
    Participate();    
    virtual       ~Participate() {};
    virtual void  Display();//вывод инфы о участнике
    friend void   TheBest(Participate* p[100], size_t  p_size);
};
/////////////////////////////////////////////////////////////////////////////////////////
void  TheBest(Participate* p[100], size_t  p_size)
{
    struct  T_weights_comp
    {
        bool  operator() (const Participate* const L, const Participate* const R)
        {
            return L->weight < R->weight;    
        }
    };
    //функция определения самого лёгкого спортсмена(и обязательно дружественная).
    std::nth_element(p, p, p + p_size, T_weights_comp());
    return  p[0]->Display();
}
/////////////////////////////////////////////////////////////////////////////////////////
Participate::Participate()
{ 
    //добавление нового участника
    cout << "\nФ.И.О.:"; 
    cin >> FIO;
    cout << "\nВозраст:"; 
    cin >> age;
    cout << "\nРост:"; 
    cin >> height;
    cout << "\nВес:"; 
    cin >> weight;
}
/////////////////////////////////////////////////////////////////////////////////////////
void Participate:: Display()
{    
    cout << "\nФ.И.О.: "  << FIO;
    cout << "\nВозраст: " << age;
    cout << "\nРост: "    << height;
    cout << "\nВес: "     << weight;
}
/////////////////////////////////////////////////////////////////////////////////////////
//производный класс "участник по плаванию"
/////////////////////////////////////////////////////////////////////////////////////////
class Swim : public  Participate
{
protected:
    int timer;//время
 
public:
    Swim();
    virtual       ~Swim(){}
    virtual void  Display(); //вывод описания 
};
/////////////////////////////////////////////////////////////////////////////////////////
Swim::Swim()
{
    //ввод результирующего времени
    cout << "\nВведите результирующее время: "; 
    cin  >> timer;
}
/////////////////////////////////////////////////////////////////////////////////////////
void Swim::Display()
{
    cout << "\nУчастник соревнования по плаванию: ";
    Participate::Display();
    cout << "\nРезультирующее время: " << timer;
}
/////////////////////////////////////////////////////////////////////////////////////////
// производный класс "участник по стрельбе"
/////////////////////////////////////////////////////////////////////////////////////////
class Gun : public  Participate
{ 
protected:
    int bal; //набранные баллы
 
public:
    Gun();
    virtual ~ Gun(){}
    virtual void Display();//вывод описания
};
/////////////////////////////////////////////////////////////////////////////////////////
Gun::Gun():Participate()
{
    //ввод набранных баллов
    cout << "\nНабранные баллы: ";  cin >> bal;
}     
/////////////////////////////////////////////////////////////////////////////////////////
void Gun::Display()
{
    cout << "\nУчастник соревнования по стрельбе: ";
    Participate::Display();
    cout << "\nНабранные баллы: " << bal << "\n";
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{ 
    std::locale::global(std::locale(""));
 
    int nMenu, flag = 1, kol;
    int k = 0; //индекс нового участника
    Participate* p[100];
    cout << "\nКоличество участников: ";cin >> kol;
    while(k < kol && flag)
    { 
        // вывод пунктов меню
        cout << "\nНовый участник. Введите: " << endl;
        cout << "1-участник по плаванию, 2-участник по стрельбе, 3-выход\n";
        cin >> nMenu;
        switch (nMenu)
        { 
        case 1 : p[k++] = new Swim(); break;
        case 2 : p[k++] = new Gun(); break;
        default : flag = 0; break;
        }  
    }
    cout << "\n\n\n!!!!!!!!!!!!!!!!!!!!!!!!Самый лёгкий спортсмен!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n";
 
    //вывод того самого спорсмена
    TheBest(p, kol);
 
    cout << "\n\n\n------------------------Полный список------------------------------\n";
    // вывод описаний
    for (int id = 0; id < kol; id++)
    {
        p[id]->Display();
        cout << "\n_______________________________________________________________\n\n";
        delete p[id];
    }
}
Yandex
Объявления
17.04.2011, 15:09     Реализация сравнения данных в массиве в классах
Ответ Создать тему
Опции темы

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