{
//предоставляем место в общежитии
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.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.