Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 07.02.2013
Сообщений: 20

Дружественная функция для класса

02.05.2013, 19:31. Показов 850. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, имеется следующая задача:
Базовый класс «СТУДЕНТ» описывает следующие данные о студентах университета: ФИО, год поступления, курс, номер группы, размер стипендии, оценки по n предметам. В состав класса входят следующие функции: виртуальный метод просмотра информации о студенте, функция-друг, которая вычисляет средний балл и выводит ФИО студента, у которого он максимальный. Производный класс «СТУДЕНТ-ОБЩЕСТВЕННИК» содержит следующие элементы: общественная работа, процент надбавки к стипендии, переопределенный метод просмотра информации о студентах-общественниках. Производный класс «СТУДЕНТ-СПОРТСМЕН» содержит следующие элементы: вид спорта, переопределенный метод просмотра информации о студентах-спортсменах.

Проблема в том что не могу правильно составить дружественную функцию, которая вычисляет средний балл и выводит ФИО студента, у которого он максимальный. Подскажите в каком месте её следует вызывать и как правильно обращаться к переменным класса. Заранее спасибо.


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
#include <iostream>
#include <conio.h>
using namespace std;
 
//базовый класс студент
class student
{ protected:
    char familia[80], name[80], otchestvo[80];
   int postupyear, kurs;
   char group[20];
   int a, *otcenki, sbal, maxbal;
   char maxname[80], maxfam[80];
   public:
   student();
   friend void sred(student& t, int p);
   virtual ~ student(){}
   virtual void Display();//просмотр инфы о студенте
  };
 
student::student()
{cout << " Name: "; cin>> name;
    cout << "\n Last name: "; cin>> familia;
    cout << "\n Patronymic: "; cin>> otchestvo;
    cout<<"\n Kurs: ";cin>> kurs;
    cout<<"\n Year of entry: "; cin>> postupyear;
    cout<< "\n Group: "; cin>> group;
    cout<<"\n Kol-vo otcenok: "; cin>>a;
    cout<<"\n Ocenki: ";
           otcenki=new int[a];
           for (int i=0; i<a; i++)
           cin >> otcenki[i];
 
   }
  void student:: Display()
    { cout << " Name: "<< name;
      cout << "\n Last name: "<< familia;
      cout << "\n Patronimic: " << otchestvo;
      cout<<"\n Kurs: "<< kurs;
      cout<<"\n Year of entry: "<<postupyear;
  }
 
  //производный класс "общественник"
  class obshestvennik : public  student
   { protected:
       char work[80]; //Общественная работа
       int  cash;//надбавка к стипендии
     public:
       obshestvennik();
       virtual ~ obshestvennik(){}
       virtual void Display(); //вывод описания книги
    };
 
  obshestvennik::obshestvennik()
  { cout << "\nObshestvennaia rabota:"; cin>>work;
      cout << "\n Nadbavka k stipendii: "; cin>>cash;
   }
 void obshestvennik::Display()
  { cout << " Name: "<< name;
     cout << "\n Last name: "<< familia;
     cout << "\n Patronimic: " << otchestvo;
     cout<<"\n Kurs: "<< kurs;
     cout<<"\n Year of entry: "<<postupyear;
     cout<< "\n Group: "<<group;
     cout << "\nObshestvennaia rabota:"<<work;
     cout << "\n Nadbavka k stipendii: "<<cash;
  }
 
 // производный класс "спортсмен"
  class sportsman : public  student
   { protected:
      char sport[80];
     public:
       sportsman();
       virtual ~ sportsman(){}
       virtual void Display();
    };
 
  sportsman::sportsman():student()
  {
   cout << "\n Sport: "; cin >> sport;
   }
 void sportsman::Display()
 {cout << " Name: "<< name;
     cout << "\n Last name: "<< familia;
     cout << "\n Patronimic: " << otchestvo;
     cout<<"\n Kurs: "<< kurs;
     cout<<"\n Year of entry: "<<postupyear;
     cout<< "\n Group: "<<group;
     cout << "\n Sport: "<< sport;
 
  }
 
void sred( student& t, int p)
{
    for (int i=0; i<t.a; i++)
    {t.sbal=t.sbal+t.otcenki[i];
        if (t.sbal/t.a>t.maxbal)
    {t.maxbal=t.sbal;
            }
    }
    cout << t.maxbal;
 
  }
 
int main()
{ int nMenu, flag = 1, kol;
  int i = 0; //индекс нового студента
  student* p[100];
  cout <<"\nKol-vo studentov: ";cin >> kol;
  while(i < kol&& flag)
   { // вывод пунктов меню
     cout<<"\nNew student. Input: " << endl;
     cout<<"1 - for obshestvennik, 2-for sportsman,3-exit\n";
      cin >> nMenu;
     switch (nMenu)
      { case 1 : p[i++] = new obshestvennik(); break;
        case 2 : p[i++] = new sportsman(); break;
        default : flag = 0; break;
      }
    }
  // вывод студентов
  for (int id = 0; id < kol; id++)
   { p[id]->Display();
     delete p[id];
    }
    getch();
 }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2013, 19:31
Ответы с готовыми решениями:

Дружественная функция класса
Проблема в том что дружественная функция класа механик в класе car (friend void update_status) не может обращатся к полям, почему? ...

Шаблон класса и дружественная функция
Доброго времени суток. Столкнулся с непониманием одного процесса. Задача звучит следующим образом: Написать шаблон функции isEqualTo для...

Дружественная шаблонная функция шаблонного класса
Не компилируется. Подскажите правильный синтаксис. template&lt;typename T&gt; class A; template&lt;typename T, typename ... Args&gt; void...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.05.2013, 19:31
Помогаю со студенческими работами здесь

Дружественная функция и приватные члены класса
Здравствуйте, уважаемые форумчане! Подскажите, пожалуйста, можно ли как-то в коде ниже сделать переменные класса приватными, а не...

Дружественная статическая функция из другого класса
у меня есть класс Info , объект которого имеет поля ключ и значение , оба типа std::string допустим я запущу сначала команду set q 1 и в...

Дружественная функция-оператор, доступ к закрытым полям класса
У меня есть класс MyClass, вот код: class MyClass { int x, y; public: MyClass(); friend ostream &amp; operator &lt;&lt;...

Преобразование типа аргумента в тип класса и дружественная функция
Добрый день. Есть код: class Cls { private: double x; public: Cls(); Cls(double);

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru