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

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

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

функция вывода - C++

10.08.2011, 22:53. Просмотров 1095. Ответов 19
Метки нет (Все метки)

Всем привет!
Есть код (правда я еще работаю над ним)
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
#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();
};
 
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;
}
 
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
10.08.2011, 22:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос функция вывода (C++):

Функция заполняющая массив и функция вывода массива - C++
Напишите две функции. Первая функция заполняет массив, вторая функция выводит массив на экран

Функция вывода дроби - C++
Сделал все функции. Осталось написать функцию вывода дроби на экран с подсчетом количества цифр в числе. Осталась ток последняя функция,...

Перегруженная функция вывода >> - C++
Есть участок кода: #include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;Windows.h&gt; ...

рекуривная функция вывода - C++
Всем доброго времени суток, мне надо решить вот такую задачку, никак не могу сообразить как это организовать. Собственно сама задача: ...

Friend функция вывода - C++
Есть класс vector.h, есть vector.cpp,вот он: using namespace std; void vector::add(const int x,const int y,const int z,vector...

Функция ввода / вывода - C++
Программа ругается на переменную C, и не выводит нужно результата, посмотрите в чем ошибка Используя принцип разделения ввода/вывода...

19
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
11.08.2011, 00:37 #16
Maxwe11, согласен, хотя считаю что красота - красотой, а простота и читабельность важнее.
Сыроежка, ну с if, while и т.д. в одном стиле - это уже перебор я считаю... У каждого оператора свой синтаксис и не надо его портить.

Не подумайте что придираюсь, просто я не люблю когда много лишнего
0
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
11.08.2011, 00:42  [ТС] #17
Сыроежка, а можно еще подробнее пожалуйста объяснить
0
Сыроежка
Заблокирован
11.08.2011, 01:13 #18
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
Сыроежка, а можно еще подробнее пожалуйста объяснить
Чтобы найти объект с наименьшим весом, очевидно, у вас должно быть несколько объектов, среди которых вы будете искать такой объект. Например, это может быть массив объектов. Проблема в том, что у вас два класса, а потому вы не можете объявить массиив ваших объектов, если только не будуте все объекты делать одного класса. Я не знаю, изучали ли вы уже контейнеры, как, например, вектор или нет. если изучали, то проще работать с вектором.

Если иметь дело с массивом, то массив должен быть массивом указателей на ваши объекты, а сами объекты вы создаете с помощью оператора new. Допустим вы хотите создать десять объектов, тогда вы определяете массив указателей на ваш базовый класс Team


C++
1
Team * a[10];

Затем в цикле создаете объекты разного типа и заносите указатель на них в этот масиив. У вас два типа объектов. Вы можете случайным образом выбирать, какой тип объекта будет использоваться.

Например

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for ( int i = 0; i < 10; i++ )
{
   Team *p;
   int type = rand() % 2;
 
   switch ( type )
   {
      case 0:
         p = new Team( /* ваши аргументы */ );
         break;
      case 1:
         p = new /* здесь конструктор вашего второго класса */
         break;
   }
 
   a[i ] = p;
}
Только тогда в вашем базовом классе Team должен быть объявлен виртуальный деструктор.
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
11.08.2011, 02:21  [ТС] #19
Спасибо, но не серчайте за мою тупость, если я понимаю, то в case я только описываю аргументы класса team

Добавлено через 25 минут
спасибо, вроде что-то понял

Добавлено через 8 минут
Сыроежка еще последний вопрос:

Цитата Сообщение от Сыроежка Посмотреть сообщение
Если иметь дело с массивом, то массив должен быть массивом указателей на ваши объекты, а сами объекты вы создаете с помощью оператора new. Допустим вы хотите создать десять объектов, тогда вы определяете массив указателей на ваш базовый класс Team
тут все ясно, но вот тут


Цитата Сообщение от Сыроежка Посмотреть сообщение
Затем в цикле создаете объекты разного типа и заносите указатель на них в этот масиив. У вас два типа объектов. Вы можете случайным образом выбирать, какой тип объекта будет использоваться.
немного не уловил, еще раз сможете объяснить, спасибо Вам за объясниния

Добавлено через 8 минут
по заданию сказано что это функия-друг, я об этом уже писал, а если тогда подружить 2 класса и не париться, то это будет правильно

Добавлено через 6 минут
необходимо написать функцию-друга, которая выведет информацию о само легком спортсмене в команде
0
easybudda
Модератор
Эксперт CЭксперт С++
9912 / 5835 / 975
Регистрация: 25.07.2009
Сообщений: 11,004
11.08.2011, 02:45 #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
#include <iostream>
#include <string>
#include <set>
 
class Sportsmen {
    std::string strName;
    std::string strPatronymic;
    std::string strSurname;
    int iAge;
    double dGrowth;
    double dWeight;
public:
    void Name(const std::string & n) { strName = n; }
    std::string Name() const { return strName; }
    void Patronymic(const std::string & p) { strPatronymic = p; }
    std::string Patronymic() const { return strPatronymic; }
    void Surname(const std::string & s) { strSurname = s; }
    std::string Surname() const { return strSurname; }
    void Age(int a) { iAge = a; }
    int Age() const { return iAge; }
    void Growth(double g){ dGrowth = g; }
    double Growth() const { return dGrowth; }
    void Weight(double w) { dWeight = w; }
    double Weight() const { return dWeight; }
};
 
std::istream & operator >> (std::istream & ist, Sportsmen & s) {
    std::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;
}
 
std::ostream & operator << (std::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() << std::endl;
        
    return ost;
}
 
struct WeightCompare {
    bool operator () (const Sportsmen & a, const Sportsmen & b) { return a.Weight() < b.Weight(); }
};
 
int main(){
    Sportsmen s;
    
    std::multiset<Sportsmen, WeightCompare> team;
    size_t count;
    
    std::cout << "Number of sportsmens in team: ";
    std::cin >> count;
 
    while ( count-- ){
        std::cout << "Name Patronymic Surname Age Growth Weight:" << std::endl;
        if ( ! ( std::cin >> s ) ){
            std::cerr << "Shit!" << std::endl;
            return 1;
        }
        team.insert(s);
    }
    
    std::cout << "\nThe first easiest:\n" << *(team.begin()) << std::endl;
    
    return 0;
}
1
11.08.2011, 02:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2011, 02:45
Привет! Вот еще темы с ответами:

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

функция вывода системного времени - C++
Всем привет! Необходимо написать функцию вывода текущего системного времени Вот слепил, а не работает: void InitTime(Time&amp; time) ...

Не работает функция вывода в main() - C++
вот кусок кода, где не работает первый printf(Rus(&quot;Выбери тип календаря&quot;)); - точнее не выводится в консоли. void main() { int q=0,...

Функция вывода на экран данных - C++
Не выводится на экран сумма двух матриц. 87-88 строчки. Кто может подсказать почему? Заранее большое спасибо #include &quot;stdafx.h&quot; ...


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

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

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