Введение в классы и объекты на С++, Java и C# (Лабораторная работа № 4), страница 3

void Student::input()

 {  cin.get();

    cout << "Фамилия: ";  getline(cin, fam);

    cout << "Имя: ";  cin >> name;

    cout << "Оценки за 5 экзаменов: ";

    for (int i=0;i<5;i++)

       cin >> oc[i];

 }

void Student::output()

 {  cout << left << setw(12)<< fam;

    cout << setw(12) << name;

    cout << setw(3) << sr_ball();

    cout << endl;

 }

float Student::sr_ball()

 { float ball = 0;

    for (int i=0;i<5;i++)

      ball = ball + oc[i];

    ball = ball/5;

   return ball;

 }

// main.cpp

#include "student.h"

#include <iostream>

#include <iomanip>

#include <string>

#include <cstdlib>

using namespace std;

int compare(const void* s1, const void* s2)

{ if (((Student*)s1)->getfam() < ((Student*)s2)->getfam()) return -1;

    else if (((Student*)s1)->getfam() > ((Student*)s2)->getfam()) return 1;

             else return 0;

 }

int main()

{

    int n;

    cout << "Введите кол-во студентов: ";

    cin >> n;

    Student* st = new Student[n]; //массив объектов

    cout << "Введите информацию о студентах:\n";

    for(int i = 0; i<n; i++)

      st[i].input();

   cout << "Список студентов: \n";

   cout << left << setw(12) << "Фамилия" << setw(12)<< "Имя" << setw(3)<< "Рейтинг" << endl;

     qsort(st,n,sizeof(Student), compare);

    for(int i = 0; i<n; i++)

        st[i].output();

    float min = st[0].sr_ball();

    for(int i = 0; i<n; i++)

      if (st[i].sr_ball() < min)

         min = st[i].sr_ball();

    cout << "Список студентов с минимальным рейтингом: \n";

    cout << left << setw(12) << "Фамилия" << setw(12)<< "Имя" << setw(3)<< "Рейтинг" << endl;

    for(int i = 0; i<n; i++)

    if (st[i].sr_ball() == min)

         st[i].output();

    cout << "Укажите фамилию студента: ";

    string fam;

    cin >> fam;

    int fl = 0;

    for(int i = 0; i<n; i++)

     {  string f =st[i].getfam();

        if (f == fam)

         { cout << "Рейтинг студента " << fam << " - " << st[i].sr_ball() << "\n";

           fl = 1;

          }

      }

    if (fl == 0)  cout << "\nНет в списке студента " << fam;

    delete [] st;

    //объект, инициализированный конструктором без параметров

    Student st1;

    cout << "Студент: \n";

    cout << left << setw(12) << "Фамилия" << setw(12)<< "Имя" << setw(3)<< "Рейтинг" << endl;

    st1.output();

    int oc [5]={34, 35, 67, 56, 45};

    //объект, инициализированный конструктором с параметрами

    Student* st2 = new Student("Иванова","Анна", oc);

    cout << "Студент: \n";

    cout << left << setw(12) << "Фамилия" << setw(12)<< "Имя" << setw(3)<< "Рейтинг" << endl;

    st2->setfam("Мухина");

    st2->output();

    delete st2;

}

Рисунок 2 – Результат выполнения программы

Пример 2