Skip to content

Commit 1590be8

Browse files
author
samir176520
committed
update files
1 parent 61a415b commit 1590be8

File tree

2 files changed

+129
-9
lines changed

2 files changed

+129
-9
lines changed

sheet1/problem3.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ In main function, define an array of m integer numbers, character c,
1212
and apply all functions on them.
1313
*/
1414
#include <iostream>
15+
#include <cmath>
1516

1617
using namespace std;
1718

@@ -59,15 +60,13 @@ void read(int numbers[],int n) // array is call by refrence by defult
5960
}
6061
}
6162

62-
bool isprime(int number)
63-
{
64-
// prime is a natural numbers has no divisors other than 1 and itself
65-
if (number <= 0)
66-
return false;
67-
68-
// some math done here.......
69-
for (int i = 2, num = number / 2; i < num; i++)
70-
{
63+
bool isPrime(int number)
64+
{
65+
if (number <= 1) return false; // 0, 1, and negatives are not prime
66+
if (number == 2) return true; // 2 is the only even prime number
67+
if (number % 2 == 0) return false; // Exclude other even numbers
68+
69+
for (int i = 3; i <= sqrt(number); i += 2) { // Check odd divisors up to sqrt(number)
7170
if (number % i == 0)
7271
return false;
7372
}

sheet8/problem1.cpp

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
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

Comments
 (0)