1
+ #include < iostream>
2
+ #include < cmath>
3
+
4
+ using namespace std ;
5
+
6
+ class Base
7
+ {
8
+ protected:
9
+ int B[30 ];
10
+ char T[30 ];
11
+ int n;
12
+
13
+ public:
14
+ void read ()
15
+ {
16
+ cout << " Enter how much numbers (n <=30): " ;
17
+ cin >>n;
18
+ cout << (n == 0 ? " " : " Enter positive integars!\n " ); // just for efficency
19
+ for (int i = 0 ; i < n; i++)
20
+ {
21
+ cout << " Number-" << i + 1 << " : " ;
22
+ cin >> B[i];
23
+ }
24
+ }
25
+
26
+ bool isPrime (int number)
27
+ {
28
+ if (number <= 1 ) return false ; // 0, 1, and negatives are not prime
29
+ if (number == 2 ) return true ; // 2 is the only even prime number
30
+ if (number % 2 == 0 ) return false ; // Exclude other even numbers
31
+
32
+ for (int i = 3 ; i <= sqrt (number); i += 2 ) // Check odd divisors up to sqrt(number)
33
+ if (number % i == 0 )
34
+ return false ;
35
+
36
+ return true ;
37
+ }
38
+
39
+ void set ()
40
+ {
41
+ for (int i = 0 ; i < n; i++)
42
+ {
43
+ if (isPrime (B[i]))
44
+ T[i] = ' Y' ;
45
+ else
46
+ T[i] = ' N' ;
47
+ }
48
+ }
49
+
50
+ virtual long double average ()
51
+ {
52
+ double sum = 0 , counter = 0 ;
53
+ for (int i = 0 ; i < n; i++)
54
+ if (T[i] == ' T' )
55
+ {
56
+ counter++;
57
+ sum += B[i];
58
+ }
59
+ return sum / double (counter);
60
+ }
61
+ };
62
+
63
+
64
+ class Derive : public Base
65
+ {
66
+ long long F[30 ];
67
+ int h;
68
+ public:
69
+
70
+ int fact (int number)
71
+ {
72
+ int result = 1 ;
73
+ for (int i = 1 ; i <= number; i++) {
74
+ result *= i;
75
+ }
76
+ return result;
77
+ }
78
+
79
+ void read ()
80
+ {
81
+ cout << " Enter h constant (integar): " ;
82
+ cin >> h;
83
+
84
+ for (int i = 0 ; i < n; i++)
85
+ F[i] = fact (B[i]);
86
+ }
87
+
88
+ long double average ()
89
+ {
90
+ long double sum = 0 , counter = 0 ;
91
+ for (int i = 0 ; i < n; i++)
92
+ if (F[i] > h)
93
+ {
94
+ counter++;
95
+ sum += F[i];
96
+ }
97
+ return sum / counter;
98
+ }
99
+
100
+ };
101
+
102
+ int main ()
103
+ {
104
+ Derive obj;
105
+ Base *ptr;
106
+ ptr = &obj;
107
+
108
+ ptr->read (); // will call function Base class (kill override (if no virtual!))
109
+ ptr->set ();
110
+
111
+ long double average_fact = ptr->average (); // will call the function in Derive beacasuse average is virtual
112
+
113
+ obj.read (); // override will call the read in Derive
114
+ long double average_prime = obj.Base ::average (); // will call the function in Base however it's virtual or not
115
+
116
+ cout << " Average of factorial of numbers Greater than constant is " << average_fact << endl;
117
+ cout << " Average of prime numbers is " << average_prime << endl;
118
+
119
+ // system("pause");
120
+ return 0 ;
121
+ }
0 commit comments