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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Перевод stdin c файла на клавиатуру http://www.cyberforum.ru/cpp-beginners/thread854356.html
#include <stdio.h> int x,y; int main(){ freopen("1.txt","r",stdin); freopen("2.txt","w",stdout); scanf("%d",&x); // scanf("%d",&y); printf("%d",x+y);
C++ Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил) написать универсальный тип, который представляет точку на плоскости в координатах (х, у) и в полярных координатах. Написать функцию для подсчета площади треугольника, заданного 3 точками. #include <iostream.h> #include <conio.h> #include <stdio.h> #include <string.h> #include <ctype.h> #include <math.h> typedef enum { stand, polar} Mode; http://www.cyberforum.ru/cpp-beginners/thread854352.html
C++ Даны вещественные числа А > 1 и В
Даны вещественные числа А > 1 и В. Распечатать все числа вида сi = Аi (i = 1,2,...), меньшие В. Помогите решить в C++.
C++ Пояснения кода
Вариант 5. Сформировать одномерный массив. Удалить из него K элементов, начиная с заданного номера, добавить K элементов, начиная с заданного номера. объясните пожалуйста отмеченные мною части кода.. Буду благодарен. #include "stdafx.h" #include <iostream> #include <conio.h> #include <time.h> #include <locale> using namespace std;
C++ Написать функцию, которая удаляет все лишние пробелы http://www.cyberforum.ru/cpp-beginners/thread854321.html
Доброго дня суток. Помогите пожалуйста.. Нужно написать функцию, которая удаляет все лишние пробелы, т. е. из нескольких подряд идущих пробелов оставить только один. А также есть такой код: #include "stdafx.h" #include <cmath>
C++ Сортировка Шелла В алфавитном порядке по фамилии алгоритмом Шелла #include <iostream> #include <string> #include <fstream> #include <iomanip> using namespace std; ifstream in("input.txt"); ofstream out("output.txt"); подробнее

Показать сообщение отдельно
5iver641
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 13
02.05.2013, 19:31     Дружественная функция для класса
Здравствуйте, имеется следующая задача:
Базовый класс «СТУДЕНТ» описывает следующие данные о студентах университета: ФИО, год поступления, курс, номер группы, размер стипендии, оценки по 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();
 }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru