Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2-й семестр / Лаб.работы / Мет.ук. к л.р.1.doc
Скачиваний:
75
Добавлен:
12.03.2016
Размер:
301.06 Кб
Скачать

Задание 3

Изменить программу, созданную на основе задания 2:

  • в классе, который работает с массивом объектов класса, созданного на основе информации об объекте индивидуального варианта, все поля данных и методы сделать статическими. В метод вывода массива объектов добавить сортировку объектов по какому-либо полю;

  • В функции main() вызвать статические методы.

Пример выполнения задания 3 показан в примере 3.

Пример 3

В листинге 3 представлена программа, в которой формируется исходный список студентов и список студентов с минимальным рейтингом.

Для создания программы использовалась среда разработки Qt Creator 3.0.0 (основан на Qt 5.2.0). На рисунке 5 показан состав проекта программы.

Создание проекта в Qt Creator: Файл -> Новый файл или проект … -> Проект без использования Qt -> Простой проект на С++.

Добавление класса в проект: Файл -> Новый файл или проект … -> С++ -> Класс С++.

Компиляция, сборка и выполнение проекта: Сборка -> Запустить.

На рисунке 6 показан результат выполнения программы.

Рисунок 5 – Состав проекта программы

Листинг 3

// student.h

#ifndef STUDENT_H

#define STUDENT_H

class Student

{ private:

char fam[20];

char* name;

int grade; //рейтинг

public:

Student();

~Student();

char* getfam();

char* getname();

int getgrade();

void setfam(const char* fam1);

void setname(const char* name1);

void setgrade(int grade1);

void input();

void output();

};

#endif // STUDENT_H

// student.cpp

#include "student.h"

#include <iostream>

#include <iomanip>

#include <cstring>

using namespace std;

Student::Student()

{ strcpy(fam,"");

name=new char[20];//выделяем память

strcpy(name,""); //копируем имя

grade = 0;

}

Student::~Student(){delete []name; }

void Student::output()

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

cout << setw(13) << name;

cout << setw(3) << grade << endl;

}

void Student::input()

{ cout << "\nФамилия: "; cin >> fam;

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

cout << "Рейтинг: "; cin >> grade;

}

char* Student::getfam() { return fam;}

char* Student::getname(){ return name;}

int Student::getgrade(){ return grade;}

void Student::setfam(const char* fam1){strcpy(fam,fam1);}

void Student::setname(const char* name1)

{ int leng=strlen(name1);

name=new char [leng+1];

strcpy(name,name1);

}

void Student::setgrade(int grade1){grade = grade1;}

// masstud.h

#ifndef MASSTUD_H

#define MASSTUD_H

#include "student.h"

class MasStud

{ static int n;

static Student* st;

public:

static void input();

static void output();

static void mingrade();

static void del(){delete [] st;}

};

#endif // MASSTUD_H

// masstud.cpp

#include "masstud.h"

#include <iostream>

#include <iomanip>

#include <cstring>

#include <cstdlib>

using namespace std;

int MasStud::n = 0;

Student* MasStud::st = NULL;

void MasStud::input()

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

cin >> n;

st = new Student[n];

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

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

st[i].input();

}

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

{ return strcmp(((Student*)s1)->getfam(), ((Student*)s2)->getfam());

}

void MasStud::output()

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

cout << setw(10) << "Фамилия" << setw(11)<< "Имя" << setw(9)<< "Рейтинг" << endl;

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

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

st[i].output();

}

void MasStud::mingrade()

{int min = st[0].getgrade();

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

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

min = st[i].getgrade();

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

cout << setw(10) << "Фамилия" << setw(11)<< "Имя" << setw(9)<< "Рейтинг" << endl;

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

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

st[i].output();

}

// main.cpp

#include <iostream>

#include "masstud.h"

using namespace std;

int main()

{ MasStud::input();

MasStud::output();

MasStud::mingrade();

MasStud::del();

return 0;

}

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

12

Соседние файлы в папке Лаб.работы