Перегрузка функции
18.05.2018, 08:47. Показов 509. Ответов 1
Не обходимо сделать один метод виртуальным а главный класс абстрактным. Объявил и реализовал функцию но выбивает ошибка. MS Visual Studio 2015 использую
freestyle.h
| 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
| #pragma once
#include "stdafx.h"
#include <string>
#include <iostream>
#include <windows.h>
#include <ctime>
using namespace std;
//! класс судья
class judge
{
//! количество судей
int number;
//! оценка судей
double score[7];
//! среднее значение
double sred;
public:
//! номер судьи
int set_number();
//! получение номера судьи
void get_number(int n);
//! оценка судей
double set_score(int n);
//! получение оценки судей
void get_score(int n, double m);
//! среднее значение оценок
double set_sred();
//! получение среднего значения
void get_sred(double g);
//! метод оценок
virtual void metod()=0;
//! конструктор без параметра
judge();
//! конструктор с параметром
judge(int n, double m1, double m2, double m3, double m4, double m5, double m6, double m7);
};
//! вывод конструктора
void print(judge&jj); |
|
freestyle.cpp
| 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
128
129
| #include "stdafx.h"
//!Библиотека ввода и вывода
#include <iostream>
#include <string>
#include "freestyle.h"
using namespace std;
//! конструктор без параметра
judge::judge() {
number = 7;
sred = 0;
score[0] = 4;
score[1] = 5;
score[2] = 4;
score[3] = 3;
score[4] = 5;
score[5] = 5;
score[6] = 4;
}
//! конструктор с параметром
judge::judge(int n, double m1, double m2, double m3, double m4, double m5, double m6, double m7) {
number = n;
sred = 0;
if ((n > 3)&(n < 8)) {
number = n;
}
else {
number = 3;
}
if ((m1 >= 0)&(m1 <= 10)) {
score[0] = m1;
}
else {
score[0] = 0;
}
if ((m2 >= 0)&(m2 <= 10)) {
score[1] = m2;
}
else {
score[1] = 0;
}
if ((m3 >= 0)&(m3 <= 10)) {
score[2] = m3;
}
else {
score[2] = 0;
}
if ((m4 >= 0)&(m4 <= 10)) {
score[3] = m4;
}
else {
score[3] = 0;
}
if ((m5 >= 0)&(m5 <= 10)) {
score[4] = m5;
}
else {
score[4] = 0;
}
if ((m6 >= 0)&(m6 <= 10)) {
score[5] = m6;
}
else {
score[5] = 0;
}
if ((m7 >= 0)&(m7 <= 10)) {
score[6] = m7;
}
else {
score[6] = 0;
}
}
//! номер судьи
int judge::set_number() {
return number;
}
//! получение номера судьи
void judge::get_number(int n) {
if ((n > 3)&(n < 8)) {
number = n;
}
else {
number = 3;
}
}
//! оценка судей
double judge::set_score(int n) {
if ((n >= 0)&(n < 7)) {
return score[n];
}
else
{
cout << " ((n >= 0)&(n < 7)) " << endl;
}
}
//! получение оценки судей
void judge::get_score(int n, double m) {
if ((n >= 0)&(n < 7)) {
if ((m >= 0)&(m <= 10)) {
score[n] = m;
}
else {
score[n] = 0;
}
}
else {
cout << " ((n >= 0)&(n < 7)) " << endl;
}
}
//! среднее значение оценок
void judge::get_sred(double g) {
if (g >= 0) {
sred = g;
}
else {
sred = 0;
}
}
//! получение среднего значения
double judge::set_sred() {
return sred;
}
//! вывод конструктора
void print(judge&jj) {
cout << "number " << jj.set_number() << endl;
for (int i = 0; i < jj.set_number(); i++) {
cout << "score " << jj.set_score(i) << endl;
}
cout << "sred " << jj.set_sred() << endl;
} |
|
new_freestyle.h
| C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| #include "freestyle.h"
#include "stdafx.h"
#pragma once
class new_judge : public judge {
public:
//! конструктор без параметра
new_judge();
//! конструктор с параметром
new_judge(int n, double m1, double m2, double m3, double m4, double m5, double m6, double m7);
new_judge& operator | (int number); //! задает новую оценку одного из судей
new_judge& operator += (new_judge &j1); //! копирует оценки судей из объекта справа в объект слева
void metod();
}; |
|
new_freestyle.cpp
| 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
| #include "stdafx.h"
#include "new_freestyle.h"
//! конструктор без параметра
new_judge::new_judge():judge()
{
get_number(7);
get_sred(0);
get_score(0, 4);
get_score(1,5);
get_score(2, 4);
get_score(3, 3);
get_score(4, 5);
get_score(5, 5);
get_score(6, 4);
}
//! конструктор с параметром
new_judge::new_judge(int n, double m1, double m2, double m3, double m4, double m5, double m6, double m7):judge (n, m1, m2, m3, m4, m5, m6, m7)
{
get_number(n);
get_sred(0);
if ((n > 3)&(n < 8)) {
get_number(n);
}
else {
get_number(3);
}
if ((m1 >= 0)&(m1 <= 10)) {
get_score(0, m1);
}
else {
get_score(0, 0);
}
if ((m2 >= 0)&(m2 <= 10)) {
get_score(1, m2);
}
else {
get_score(1, 0);
}
if ((m3 >= 0)&(m3 <= 10)) {
get_score(2, m3);
}
else {
get_score(2, 0);
}
if ((m4 >= 0)&(m4 <= 10)) {
get_score(3, m4);
}
else {
get_score(3, m4);
}
if ((m5 >= 0)&(m5 <= 10)) {
get_score(4, m5);
}
else {
get_score(4, m5);
}
if ((m6 >= 0)&(m6 <= 10)) {
get_score(5, m6);
}
else {
get_score(5, m6);
}
if ((m7 >= 0)&(m7 <= 10)) {
get_score(6, m7);
}
else {
get_score(6, m7);
}
}
//! задает новую оценку одного из судей
new_judge& new_judge::operator|(int number)
{
int x;
x = 1 + rand() % 10;
this->get_score(number,x);
return *this;
}
//! копирует оценки судей из объекта справа в объект слева
new_judge& new_judge::operator+=(new_judge & j1)
{
int x1 = j1.set_number();
for (int i = 0; i < x1; i++) {
this->get_score(i, j1.set_score(i));
}
return *this;
}
//! метод оценок
void new_judge::metod() {
sred = 0;
double min = 5;
double max = 5;
for (int i = 0; i < number; i++) {
sred = sred + score[i];
if (max < score[i]) {
max = score[i];
}
if (min > score[i]) {
min = score[i];
}
}
sred = (sred - max - min) / (number - 2);
cout << "max=" << max << " min=" << min << endl;
} |
|
new_freestyle2.h
| C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
| #include "freestyle.h"
#include "stdafx.h"
#pragma once
class new_judge2 : public judge {
public:
//! конструктор без параметра
new_judge2();
//! конструктор с параметром
new_judge2(int n, double m1, double m2, double m3, double m4, double m5, double m6, double m7);
void metod();
}; |
|
new_freestyle2.cpp
| 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
| #include "stdafx.h"
#include "new_freestyle2.h"
//! конструктор без параметра
new_judge2::new_judge2() :judge()
{
get_number(7);
get_sred(0);
get_score(0, 4);
get_score(1, 5);
get_score(2, 4);
get_score(3, 3);
get_score(4, 5);
get_score(5, 5);
get_score(6, 4);
}
//! конструктор с параметром
new_judge2::new_judge2(int n, double m1, double m2, double m3, double m4, double m5, double m6, double m7) :judge(n, m1, m2, m3, m4, m5, m6, m7)
{
get_number(n);
get_sred(0);
if ((n > 3)&(n < 8)) {
get_number(n);
}
else {
get_number(3);
}
if ((m1 >= 0)&(m1 <= 10)) {
get_score(0, m1);
}
else {
get_score(0, 0);
}
if ((m2 >= 0)&(m2 <= 10)) {
get_score(1, m2);
}
else {
get_score(1, 0);
}
if ((m3 >= 0)&(m3 <= 10)) {
get_score(2, m3);
}
else {
get_score(2, 0);
}
if ((m4 >= 0)&(m4 <= 10)) {
get_score(3, m4);
}
else {
get_score(3, m4);
}
if ((m5 >= 0)&(m5 <= 10)) {
get_score(4, m5);
}
else {
get_score(4, m5);
}
if ((m6 >= 0)&(m6 <= 10)) {
get_score(5, m6);
}
else {
get_score(5, m6);
}
if ((m7 >= 0)&(m7 <= 10)) {
get_score(6, m7);
}
else {
get_score(6, m7);
}
}
void new_judge2::metod()
{
} |
|
source.cpp
| 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
| // lab1.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include <iostream>
#include <string>
#include "freestyle.h"
#include "new_freestyle.h"
using namespace std;
int main() {
//!Задание данных
new_judge j1(7, 2, 6, 9, 4, 8, 5, 5);
new_judge jj2(7, 2, 6, 9, 4, 8, 5, 5);
new_judge j3(7, 2, 2, 2, 2, 2, 2, 2);
print(j1);
j1.metod();
print(j1);
new_judge j2;
print(j2);
j2.metod();
print(j2);
jj2 | 1;
print(jj2);
jj2 += j3;
print(jj2);
cin.get();
return 0;
} |
|
0
|