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

Проблема с перегрузками функций - C++

Восстановить пароль Регистрация
 
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
14.04.2011, 20:04     Проблема с перегрузками функций #1
Описать класс с именем STUDENT, содержащий следующие поля: фамилия и инициалы;номер группы; успеваемость (массив из пяти элементов).
Написать программу, выполняющую следующие действия:
а) ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT;записи должны быть упорядочены по возрастанию номера группы;
б) вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4,0;

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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#define L 25
using namespace std;
class STUDENT
{
 
public :
    char firstname[L];
    char lastname[L];
    int groupnumber;
    int label[5];
friend ostream& operator<<(ostream& out,STUDENT &a);//именно с &
friend istream& operator>>(istream &in,STUDENT &a,int MAX);
};
 
 
float sred(int *a,int n)
{float j=0;
for (int i=0;i<n;i++)
    j+=a[i];
 
return (j/n);
 
}
 ostream& operator<<(ostream& out,STUDENT &a)
{
return (out<<a.firstname<<" "<<a.lastname<<" № "<<a.groupnumber);   
}
istream& operator>>(istream &in,STUDENT &a,int MAX)
{   
        for (int i=0;i<MAX;i++)
        {cout<<"Введите фамилию"<<i+1<<"-го"<<" студента:";
        cin.sync();//!!!
        cin.getline(a[i].firstname,L);
 
        cout<<"Введите имя"<<i+1<<"-го"<<" студента:";
        cin.get(a[i].lastname,L);
 
        cout<<"Номер группы:";cin>>a[i].groupnumber;
        for (int j=0;j<5;j++)
        { cout <<"Введите отметку по "<<j+1<<"-й дисциплине:";
        cin>>a[i].label[j];}}
        
}
 
int _tmain(int argc, _TCHAR* argv[])
{setlocale(LC_ALL,"Russian");int MAX;
 
cout<<"Программа:\n";
cout<<"1)Cоздает списки студентов!\n";
cout<<"2)Сортирует по номеру группы!\n";
cout<<"3)Выводит списки студентов,имеющих балл выше 4.0!\n";
cout<<"~~~~~~~~~~~~~~~~~~~~1~~~~~~~~~~~~~~~~~~~~\n";
cout<<"Введите размер списка студентов:";cin>>MAX;
 
STUDENT *a;float *labelsred;int *index,*num;int i,j;
a=new STUDENT[MAX];
labelsred=new float[MAX];
index=new int[MAX];
num=new int[MAX];
(cin,a);
for (i=0;i<MAX;i++)
{
    labelsred[i]=sred(&a[i].label[0],5);
    num[i]=a[i].groupnumber;
    index[i]=i;
}
int n,m,buffer1,buffer2;float buffer3;
n=MAX;
for (int i=0;i<n;i++)
{m=i;
for (int j=i+1;j<n-1;j++)
{
    if (num[j]<num[m])
    {m=j;
    buffer1=num[i];
    num[i]=num[m];
    num[m]=buffer1;
    buffer2=index[i];
    index[i]=index[m];
    index[m]=buffer2;
    buffer3=labelsred[i];
    labelsred[i]=labelsred[m];
    labelsred[m]=buffer3;
    }
 
}
 
}
 
for (int y=0;y<MAX;y++)
{ cout<<index[y]+1<<")"<<a[y];}
cout<<"Cписок студентов,у кого средний бал больше 4.0 :\n";
int kol=0;
for (int i=0;i<MAX;i++)
{
    if (labelsred[i]> 4.0) { cout<<a[i];kol++;}
}
 
if (kol==0) cout<<"Таких студентов нет!!!\n";
getch();
 
 
    return 0;
}
Не перегружается операция ввода
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2011, 20:04     Проблема с перегрузками функций
Посмотрите здесь:

Проблема с перегрузкой операторов '-' >> << и с конструктором без параметров C++
функции класса раздела private реализуються так же как и раздела public? в смысле виртуальных функций, дружественных функций, и т.д. C++
C++ Проблема с использованием функций.
C++ Объявление функций внутри других функций
C++ Программа с классами комплексных чисел и перегрузками операций
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
14.04.2011, 20:40     Проблема с перегрузками функций #2
а с чего оно у вас должно работать? посмотрите как правильно надо перегружать оператор ввода, к тому же вы не возвращаете ссылку на поток
пример
C++
1
2
3
4
5
6
istream & operator>>(istream &input, Array &num)
{
        for (int i=0; i<num.size; i++)
                input>>num.ptr[i]; // 
        return input;
}
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
14.04.2011, 20:44  [ТС]     Проблема с перегрузками функций #3
Цитата Сообщение от panicwassano Посмотреть сообщение
а с чего оно у вас должно работать? посмотрите как правильно надо перегружать оператор ввода, к тому же вы не возвращаете ссылку на поток
поясните и что крнкретно я не так сделал?
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
14.04.2011, 20:49     Проблема с перегрузками функций #4
Что конкретно непонятно? вы используете глобальные cin и cout, и при чтении из потока нужно возвратить ссылку на поток, посмотрите мой пример или в вашем коде перегрузку вывода
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
14.04.2011, 20:57  [ТС]     Проблема с перегрузками функций #5
Если не трудно помогите код поменять,я не соображу че то
Yandex
Объявления
14.04.2011, 20:57     Проблема с перегрузками функций
Ответ Создать тему
Опции темы

Текущее время: 17:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru