Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #pragma warning(disable:4996)
- #include<iostream>
- #include<string.h>
- #include<iomanip>
- #include<ctime>
- using namespace std;
- class Student {
- char *surname;
- int *rating;
- int sizeArr;
- double average;
- public:
- Student();
- Student(char*, int*, int);
- Student(const Student&);
- //set():
- void setSurname();
- void setSize();
- void RandRating();
- void setRatings();
- void setAver(double aver){ average = aver; }
- // get():
- char *getSur()const;
- int getSize()const;
- int *getR();
- double getAverage()const{ return average; }
- void set();
- void print();
- int MAX(); int MIN(); int SUM();
- double S_A();
- Student mostLess(Student*);
- Student mostMore(Student*);
- int& getMark(int);
- Student & operator=(const Student&);
- Student & operator+(const Student&);
- Student operator-(const Student&);
- Student & operator+=(const Student&);
- bool operator>(Student&);
- bool operator<(Student&);
- bool operator>=(Student&);
- bool operator<=(Student&);
- bool operator==(Student&);
- bool operator!=(Student&);
- int &operator[](int S) { return rating[S]; }
- int operator()(int);
- Student operator++();
- Student operator++(int);
- Student operator--();
- Student operator--(int);
- ~Student() { delete[]surname; delete[]rating; }
- };
- ostream &operator<<(ostream &os, Student &st);
- istream &operator>>(istream &is, Student st);
- Student::Student() :surname(NULL), rating(0), average(0) { surname = new char[50]; rating = new int[20]; sizeArr = 12; }
- Student::Student(char*surname, int *r, int z) {
- surname = new char[strlen(surname + 1)];
- strcpy(this->surname, surname);
- sizeArr = z; rating = new int[sizeArr];
- for (int i(0); i < sizeArr; i++){ rating[i] = r[i]; }
- average = 0;
- }
- Student::Student(const Student &st) {
- surname = new char[50]; rating = new int[20];
- strcpy(this->surname, st.surname);
- sizeArr = st.sizeArr;
- for (int i(0); i < sizeArr; i++){ rating[i] = st.rating[i]; }
- average = st.average;
- }
- void Student::setSurname() {
- cout << "Surname: "; cin >> surname;
- }
- void Student::setSize(){
- cout << "Input number Student"<<"\n"<<" (six for example): "; cin >> sizeArr;
- }
- void Student::setRatings() {
- for (int i = 0; i < sizeArr; i++) {
- cout << "Input rating from " << i + 1 << " to " << sizeArr << "\n";
- cin >> rating[i];
- }
- S_A();
- }
- void Student::RandRating() {
- for (int i(0); i < sizeArr; i++)
- rating[i] = rand() % 12+1;
- }
- char *Student::getSur() const{ return surname; }
- int *Student::getR() { return rating; }
- int Student::getSize() const{ return sizeArr; }
- void Student::set(){
- cout << "Surname: "; cin >> surname;
- RandRating();
- //setRatings();
- S_A();
- }
- void Student::print() {
- cout << "\n\nSurname: " << surname ;
- cout << "\nRating for 1 year is: \n";
- for (int i(0); i < sizeArr; i++) {
- cout << setw(5) << rating[i] ;
- }
- cout << "\nAverage is: " <<S_A() << "\n\n";
- }
- int Student::MAX() {
- int pos(0);
- int max = rating[0];
- for (int i = 0; i < sizeArr; i++) {
- if (max < rating[i]) {
- max = rating[i];
- pos = i;
- }
- }
- return max;
- }
- int Student::MIN() {
- int pos(0);
- int min = rating[0];
- for (int i = 0; i < sizeArr; i++) {
- if (min > rating[i]) {
- min = rating[i];
- pos = i;
- }
- }
- return min;
- }
- int Student::SUM() {
- int sum(0);
- for (int i = 0; i < sizeArr; i++) {
- sum += rating[i];
- }
- return sum;
- }
- double Student::S_A() {
- int sum(0);
- for (int i(0); i < sizeArr; i++) {
- sum+=rating[i];
- }
- return (double)sum / sizeArr;
- }
- int& Student::getMark(int index) {
- return rating[index];
- }
- Student Student::mostLess(Student *s){
- int min = s->rating[0], pos(0);
- for (int i(0); i < sizeArr; i++){
- if (min < s->rating[i]){
- pos = i;
- min = s->rating[i];
- }
- }return s[pos];
- }
- Student Student::mostMore(Student *s){
- int max = s->rating[0], pos(0);
- for (int i(0); i < sizeArr; i++){
- if (max > s->rating[i]){
- pos = i;
- max = s->rating[i];
- }
- }return s[pos];
- }
- //////////////////////////////////////////////////////////////////////////////////////
- Student &Student::operator=(const Student &s) {
- delete[]rating;
- sizeArr = s.sizeArr;
- rating = new int[sizeArr];
- for (int i(0); i < sizeArr; i++) {
- rating[i] = s.rating[i];
- }
- return *this;
- }
- Student &Student::operator+(const Student &sS) {
- Student tmp; tmp = sS;
- tmp.average = this->average+ sS.average;
- return tmp;
- }
- Student Student::operator-(const Student&sS) {
- Student tmp; tmp = sS;
- tmp.average = this->average - sS.average;
- return tmp;
- }
- Student &Student::operator+=(const Student& sPD) {
- Student tmp;
- for (int i(0); i < sizeArr; i++) {
- this->rating[i] += tmp.rating[i];
- }
- return *this;
- }
- bool Student::operator>(Student &more) {
- return this->S_A() > more.S_A();
- }
- bool Student::operator<(Student &small) {
- return this->S_A() < small.S_A();
- }
- bool Student::operator>=(Student &moreR) {
- return this->S_A() >= moreR.S_A();
- }
- bool Student::operator<=(Student &smallR) {
- return this->S_A() <= smallR.S_A();
- }
- bool Student::operator==(Student &R) {
- return this->S_A() == R.S_A();
- }
- bool Student::operator!=(Student &N) {
- return this->S_A() != N.S_A();
- }
- Student Student::operator++() {
- for (int i(0); i < sizeArr; i++) {
- ++rating[i];
- setAver(S_A());
- return *this;
- }
- }
- Student Student::operator++(int) {
- Student tmp = *this;
- for (int i(0); i < sizeArr; i++) {
- (this->rating[i])++;
- }
- return tmp;
- }
- Student Student::operator--() {
- for (int i(0); i < sizeArr; i++) {
- --rating[i];
- setAver(S_A());
- return *this;
- }
- }
- Student Student::operator--(int) {
- Student tmp = *this;
- for (int i(0); i < sizeArr; i++) {
- (this->rating[i])--;
- }
- return tmp;
- }
- int Student::operator ()(int x) {
- for (int i = 0; i < sizeArr; i++) {
- if (rating[i] == x) {
- return i;
- }
- }
- return -1;
- }
- //Func for: cout<< & cin>>
- ostream &operator<<(ostream &os, Student &st) {
- os << st.getSur();
- return os;
- }
- istream &operator>>(istream &is, Student st) {
- st.setSurname();
- cout << "Input rating: ";
- for (int i = 0; i < st.getSize(); i++) {
- cin >> st.getMark(i);
- }
- st.setAver(st.S_A());
- return is;
- }
- void main(){
- srand(time(NULL));
- Student s; s.setSize();
- Student *st = new Student[s.getSize()];
- for (int i(0); i < s.getSize(); i++){ cout << " Student "<< i + 1 <<" \n " ; st[i].set(); }
- for (int i(0); i < s.getSize(); i++) st[i].print();
- cout << "\nMIN rating: ";
- for (int i(0); i < s.getSize(); i++){ cout << st[i].MIN() << " "; }
- cout << "\nMAX rating: ";
- for (int i(0); i < s.getSize(); i++){ cout << st[i].MAX() << " "; }
- cout << "\n\nStudent who have more less rating is: " << st->mostLess(st) << "\n";
- cout << "\n\nStudent who have most Hight rating is: " << st->mostMore(st) << "\n\n\n";
- //for (int i(0); i < s.getSize(); i++){
- // if (st[i].getR() > st[i].MIN())
- // cout<<st[i].getMark(st[i].MAX());
- //}
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment