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

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

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

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

10.08.2011, 22:53. Просмотров 1056. Ответов 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
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
10.08.2011, 23:04 #2
Конкретней пожалуйста.
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
10.08.2011, 23:07  [ТС] #3
Необходимо написать функцию-друг, которая выводит информацию о само легком спортсмене в команде, забыл написать, функця должна быть в классе Team (базовый)
0
Сыроежка
Заблокирован
10.08.2011, 23:12 #4
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
Всем привет!
Есть код (правда я еще работаю над ним)
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;
  }
};
подскажите пожалуйста как тут выводить информацию о самом легком спортсмене
Никак! Потому что вы не указали, как будет организовано хранение ваших спортсменов. Вы лишь задали определение типа для отдельного спорстмена, а как у вас будет задана сововкупность спортсменов, это неизвестно. Вы назвали класс для определения спортсмена Team, но это имя неудачно, так как это скорей всего класс не для определения команды, а лишь для определения одного члена команды.

Но в любом случае вам нужно предоставить возможность сравнивать спортсменов по весу. Для этого вы должны либо предоставить открытый метод для доступа к весу спортсмена, либо перегрузить оператор сравнения '<'.

Добавлено через 3 минуты
Например, вы в своем классе Team могли бы определить открытый метод get_weight.

C++
1
2
3
4
float get_weight() const
{
   return ( weight );
}
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
10.08.2011, 23:13  [ТС] #5
а счетчик, показывающий количество спортсменов надо делать

Добавлено через 1 минуту
а как вообще определить что сортсмен будет легким
0
Сыроежка
Заблокирован
10.08.2011, 23:13 #6
Например, вы в своем классе Team могли бы определить открытый метод get_weight.

C++
1
2
3
4
float get_weight() const
{
   return ( weight );
}
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
10.08.2011, 23:16  [ТС] #7
а как дальше быть?

Добавлено через 46 секунд
Извините, я просто не могу представить как сравнивать, я нуб еще
0
Сыроежка
Заблокирован
10.08.2011, 23:18 #8
А дальше с помощью метода get_weight сравниваете веса спортсменов.
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
10.08.2011, 23:22  [ТС] #9
вот переменную мы открыли для доступа, а вот как сравнить, сыроежка можете продемонстрировать пожалуйста
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
10.08.2011, 23:24 #10
Сыроежка, хочу спросить ради спортивного интереса:
C++
1
2
3
4
float get_weight() const
{
   return ( weight );
}
Для чего тут const (именно в данном случае) и для чего тут скобки в return ?
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.08.2011, 23:40 #11
Цитата Сообщение от lazybiz Посмотреть сообщение
Для чего тут const
const запрещает методу менять состояние объекта, ну и сообщает стороннему читателю(который видит только интерфейс и не видит реализации) что метод не меняет состояние объекта

Цитата Сообщение от lazybiz Посмотреть сообщение
для чего тут скобки в return ?
для красоты
0
Сыроежка
Заблокирован
10.08.2011, 23:42 #12
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
вот переменную мы открыли для доступа, а вот как сравнить, сыроежка можете продемонстрировать пожалуйста
Допустим, вы создаете два объекта своего класса Team

C++
1
2
Team sportsmen1( /* здесь параметры вашего конструктора*/ );
Team sportsmen2( /* здесь параметры вашего конструктора*/ );
А затем сравниваете

C++
1
2
3
4
if ( sportsmen1.weight() < sportsmen2.weight() )
{
   std::cout << "sportsmen1 is lighter\n";
}
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
10.08.2011, 23:58  [ТС] #13
а если их несколько, то тогда как (более двух), заранее спасибо

Добавлено через 13 минут
да и как тут прилипить friend если спортсменов например 10, и как тогда сравнить
0
Сыроежка
Заблокирован
11.08.2011, 00:24 #14
Цитата Сообщение от lazybiz Посмотреть сообщение
Сыроежка, хочу спросить ради спортивного интереса:
C++
1
2
3
4
float get_weight() const
{
   return ( weight );
}
Для чего тут const (именно в данном случае) и для чего тут скобки в return ?
Скобки после return носят стилистический характер. Дело в том, что все операторы языка С/С++ используют выражения в круглых скобках, как, например, оператор if ( ... ), while ( ... ) и т.д. И только return стоит особняком. Использование скобок с return делает программу, написанной в одном стиле.

Что касается квалификатора const, то помимо того, что до меня было сказано, он позволяет вызывать этот метод для объектов, которые были объявлены константными. Если этого не делать, то, фактически, вы не сможете вызвать ни один метод для константного объекта.

Например,

const Team a;
a.get_weight();


Если мы у данного метода отсутствовал квалификатор const, то мы не могли бы узнать, какой вес у этого объекта.

Добавлено через 9 минут
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
а если их несколько, то тогда как (более двух), заранее спасибо

Добавлено через 13 минут
да и как тут прилипить friend если спортсменов например 10, и как тогда сравнить
Тогда надо искать минимальный элемент последовательности. То есть если у вас спорстмены помещены в массив или другой контейнер, то вы ищите минимальный элемент. Сначала устанавливаете минимальный элемент равный первому спортсмены в последовательности, а затем поочереди его сравниваете с другими элементами последовательности. И если очередной элемент больше минимального, то минимальный элемент кладете равным этому элементы.

Существует стандартный алгоритм std::min_element, который позволяет это делать для различных последовательностей. Но так как вы его скорей всего не знаете, то делать надо будет в цикле, если у вас массив элементов.

Я покажу например массива целых чисел

C++
1
2
3
4
5
6
int min = a[0];
 
for ( int i = 1; i < n; i++ )
{
   if ( a[i] < min ) min = a[i];
}
У вас будут объекты вашего класса. То есть вы должны объявлять не int min = a[i], а Team min = a[0];
Для этого в вашем классе должен быть определены конструктор копирования и оператор присваивания.
1
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
11.08.2011, 00:29 #15
Цитата Сообщение от Сыроежка Посмотреть сообщение
И только return стоит особняком
sizeof еще в голову приходит
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2011, 00:29
Привет! Вот еще темы с ответами:

Функция вывода маршрута - 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; ...


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

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

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