Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Дефинирайте клас, описващ дати от календара.
- Дефинирайте копиращ конструктор и такъв с параметри за задаване на дата.
- Клас описващ студент - Име, Факултетен номер, Дата на раждане и Среден успех.
- Метод, който сравнява за по-малко по даден параметър обект с текущия.
- Демонстрирайте работата на класовете със създаване на колекция от студенти
- и сортирайте студентите по успех в низходящ ред
- */
- #include <iostream>
- #include<string.h>
- #define MAX_STUDENTS_NUMBER 10
- using namespace std;
- class Date{
- private:
- int day = 0;
- int month = 0;
- int year = 0;
- public:
- Date(){}
- Date(int, int, int);
- Date(const Date & copyObj);
- };
- Date::Date(int d, int m , int y){
- day= d;
- month = m;
- year = y;
- }
- Date::Date(const Date & copyObj){
- day = copyObj.day;
- month = copyObj.month;
- year = copyObj.year;
- }
- class Student{
- private:
- char* name = nullptr;
- char* facNum = nullptr;
- Date date;
- double averageGrade = 0.0;
- public:
- Student(){}
- Student(const Student & copyObj);
- bool operator<(const Student & compareObj);
- void setAverageGrade(double);
- double getAverageGrade();
- };
- Student::Student(const Student & copyObj){
- name = new char[strlen(copyObj.name) + 1];
- strcpy(name, copyObj.name);
- facNum = new char[strlen(facNum) + 1];
- strcpy(facNum, copyObj.facNum);
- date = copyObj.date;
- averageGrade = copyObj.averageGrade;
- }
- bool Student::operator<(const Student & compareObj){
- if(averageGrade < compareObj.averageGrade){
- return true;
- }
- else {
- return false;
- }
- }
- void Student::setAverageGrade(double avg){
- averageGrade = avg;
- }
- double Student::getAverageGrade(){
- return averageGrade;
- }
- int main()
- {
- Student students[MAX_STUDENTS_NUMBER];
- for(int i = 0; i < 10; i++){
- students[i].setAverageGrade((double)rand()/100);
- cout<<students[i].getAverageGrade()<<" ";
- }
- cout<<endl;
- int minIndex = 0;
- Student temp;
- //sorting
- for(int i = 0; i < MAX_STUDENTS_NUMBER - 1; i++){
- minIndex = i;
- for(int j = i+1; j< MAX_STUDENTS_NUMBER; j++){
- if(students[j] < students[minIndex]){
- minIndex = j;
- }
- }
- temp = students[minIndex];
- students[minIndex] = students[i];
- students[i] = temp;
- }
- // printing
- for(int i = 0; i < MAX_STUDENTS_NUMBER; i++){
- cout<<students[i].getAverageGrade()<<" ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement