Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для Mr. Pyatachok
8 / 9 / 1
Регистрация: 30.06.2011
Сообщений: 250

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

10.08.2011, 22:53. Показов 2477. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.08.2011, 22:53
Ответы с готовыми решениями:

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

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

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

19
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
10.08.2011, 23:04
Конкретней пожалуйста.
1
 Аватар для Mr. Pyatachok
8 / 9 / 1
Регистрация: 30.06.2011
Сообщений: 250
10.08.2011, 23:07  [ТС]
Необходимо написать функцию-друг, которая выводит информацию о само легком спортсмене в команде, забыл написать, функця должна быть в классе Team (базовый)
0
Заблокирован
10.08.2011, 23:12
Цитата Сообщение от 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 / 9 / 1
Регистрация: 30.06.2011
Сообщений: 250
10.08.2011, 23:13  [ТС]
а счетчик, показывающий количество спортсменов надо делать

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

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

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

Цитата Сообщение от lazybiz Посмотреть сообщение
для чего тут скобки в return ?
для красоты
0
Заблокирован
10.08.2011, 23:42
Цитата Сообщение от 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 / 9 / 1
Регистрация: 30.06.2011
Сообщений: 250
10.08.2011, 23:58  [ТС]
а если их несколько, то тогда как (более двух), заранее спасибо

Добавлено через 13 минут
да и как тут прилипить friend если спортсменов например 10, и как тогда сравнить
0
Заблокирован
11.08.2011, 00:24
Цитата Сообщение от 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
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
11.08.2011, 00:29
Цитата Сообщение от Сыроежка Посмотреть сообщение
И только return стоит особняком
sizeof еще в голову приходит
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
11.08.2011, 00:37
Maxwe11, согласен, хотя считаю что красота - красотой, а простота и читабельность важнее.
Сыроежка, ну с if, while и т.д. в одном стиле - это уже перебор я считаю... У каждого оператора свой синтаксис и не надо его портить.

Не подумайте что придираюсь, просто я не люблю когда много лишнего
0
 Аватар для Mr. Pyatachok
8 / 9 / 1
Регистрация: 30.06.2011
Сообщений: 250
11.08.2011, 00:42  [ТС]
Сыроежка, а можно еще подробнее пожалуйста объяснить
0
Заблокирован
11.08.2011, 01:13
Цитата Сообщение от 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 / 9 / 1
Регистрация: 30.06.2011
Сообщений: 250
11.08.2011, 02:21  [ТС]
Спасибо, но не серчайте за мою тупость, если я понимаю, то в case я только описываю аргументы класса team

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

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

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


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

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

Добавлено через 6 минут
необходимо написать функцию-друга, которая выведет информацию о само легком спортсмене в команде
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
11.08.2011, 02:45
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.08.2011, 02:45
Помогаю со студенческими работами здесь

Перегруженная функция вывода >>
Есть участок кода: #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, и не выводит нужно результата, посмотрите в чем ошибка Используя принцип разделения ввода/вывода...

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru