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

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

Войти
Регистрация
Восстановить пароль
 
JaEvg
1 / 1 / 0
Регистрация: 23.09.2010
Сообщений: 31
#1

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

17.04.2011, 13:34. Просмотров 441. Ответов 4
Метки нет (Все метки)

Прошу нравоучения наверн, как организовать можно сравнение веса(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++
Здравствуйте! Есть три класса, абстрактный CGraphicsObject, и два его наследника Circle и Parallelogram В CGraphicsObject содержится...

Реализация операции сравнения для длинных чисел - C++
c++ Реализация операции сравнения для длинных чисел A&gt;=B Используя &quot;длинную арифметику&quot; помогите пожста

Использование статический данных в классах - C++
Добрый день! Помогите, пожалуйста! Есть задача: создать в классе статическое поле - годовой процент. И присвоить этому полю какое-либо...

Поведение Приватных данных в классах - C++
Привет, всем я только начинаю изучать С++, для закрепления материалов походу обучения все примеры еще пишу на javascript. И случайно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
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
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
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];
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2011, 15:09
Привет! Вот еще темы с ответами:

Преобразование типов данных в классах - C++
если например есть такой код: class TIME { int a; } TIME object; object = 10;

Нюансы использования динамических массивов в качестве данных-членов в классах - C++
Здравствуйте! Не могу создать массив объектов. Помогите ... class hashTable { private: sortedlist* arr ; int arrSize; ...

Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе - C++
Для каждого из четырех классов указаны имена девочек, обучающихся в них. Определить, какие из этих имен встречаются во всех классах, какие...

Структуры данных. Написать программу, позволяющую определить, есть ли в школе в каких-либо классах однофамильцы - C++
Написать программу, позволяющую определить, есть ли в школе в каких-либо классах однофамильцы. Данные об ученике идут в следующем порядке:...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.04.2011, 15:09
Ответ Создать тему
Опции темы

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