Класс. Объект. Конструкторы. Деструкторы. Массив объектов, страница 4

{

//предоставляем место в общежитии

group_list[i]->list[j].setIs_hostel(true);

group_list[i]->list[j].PrintStudentData();

places_count--;

}

if (places_count == 0)

break;

}

if (places_count == 0)

break;

}

places_count = temp_places_count;

//получение списка оставшихся студентов (без общежития)

list_for_hostel  = new CStudent[total_student_count - places_count];

list_other_needs = new CStudent[total_student_count - places_count];

int current = 0;

int current_other = 0;

for(i = 0; i < group_count; i++)

{

//получаем количество студентов в группе

k = group_list[i]->getStudentCount();

for(j = 0; j < k; j++)

{

//если общежитие не предоставлено, заносим студента

//в списоук нуждающихся

if (! group_list[i]->list[j].getIs_hostel())

{

//получаем доход текущего студента

temp = group_list[i]->list[j].getDochod();

if (temp <= MIN_SALARY * 3)

{

list_for_hostel[current] = group_list[i]->list[j];

current++;

}

else

{

list_other_needs[current_other] = group_list[i]->list[j];

current_other++;

}

}

}

}

CStudent temp_obj;     

//сортировка списка студентов с достаточной ЗП по среднему баллу

for( i=0; i < total_student_count - places_count - current; i++)

{            // i - номер прохода

for( j = total_student_count - places_count- current - 1; j > i; j-- )

{     // внутренний цикл прохода

if ( list_other_needs[j - 1].getsrBall() > list_other_needs[j].getsrBall() )

{

temp_obj = list_other_needs[j - 1];

list_other_needs[j - 1] = list_other_needs[j];

list_other_needs[j] = temp_obj;

}

}

}

//выводим упорядоченые списки нуждающихся студентов

printf("\n\nWith smal dohod: \n");

for(i = 0; i < current; i++)

list_for_hostel[i].PrintStudentData();

printf("\n\nOther students: \n");

for(i = 0; i < current_other; i++)

list_other_needs[i].PrintStudentData();

}

//очищаем память из-под массивов объектов

delete [] list_for_hostel;

delete [] list_other_needs;

for (i = 0; i < group_count; i++)

delete group_list[i];

delete group_list;

}

catch(...)

{

}

getch();

}

Скриншоты результатов работы программы

Ввод исходных данных: сразу задаём количество групп, затем для каждой группы последовательно количество человек, затем для каждого человека в группе вводим данные. По умолчанию на данном этапе для при знака «общежитие предоставлено» устанавливается значение false.

Далее выводится общий список всех групп.

После ввода количества мест в общежитии, которые можно предоставить для проживания, списки всех групп анализируются и разбиваются на 3: список студентов, имеющих низкий доход, которым общежитие предоставлено; список студентов, имеющих низкий доход, которым общежитие не предоставлено из-за нехватки мест; список прочих студентов, отсортированный по среднему баллу.


Список используемой литературы.

1.  Методические указания по выполнению контрольной работыпо курсу «Основы алгоритмизации и программирования» для студентов заочного отделения ИИТ. / Корбит А.Г., Кривоносова Т.М. – Минск: БГУИР, 2007.

2.  Литвиненко Н.А. Технология программирования на С++. Начальный курс.– СПб.: БХВ – Петербург, 2004.

3.  Романов Е.Л. Практикум по программированию на С++: Уч. пособие. – СПб.: БХВ – Петербург, 2002.

4.  Луцик Ю.А. Объектно-ориентированное программирование на С++. – Мн.: БГУИР Кафедра электронных вычислительных машин – 2005.

5.  Кёнинг Эндрю, Барбара Му Эффективное программирование на С++. Пер. с англ. – М.: Издательский дом “Вильямс”, 2002.