Структура STUDENT, записи упорядочены по полю GROUP, вывод на дисплей фамилий студентов у кого средний балл больше 4

О задаче:
[свернуть]

По книге:C/C++ Программирование на языке высокого уровня: Учебник для вузов
Автор книги: Павловская Татьяна Александровна
Задача на тему: Структуры — (на странице 144)
Вариант задачи: 1 — (на странице 144)’ style=’default’ collapse_link=’true’]
Условия задачи:
[свернуть]

1.Описать структуру с именем STUDENT, содержащую следующие поля:
[свернуть]

  • NAME – фамилия и инициалы;
  • GROUP – номер группы;
  • SES – успеваемость( массив из 5 элементов).

‘ style=’default’ collapse_link=’true’]

2. Написать программу, выполняющую следующие действия:
[свернуть]

  • ввод с клавиатуры данных в массив STUD1, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию содержимого поля GROUP;
  • вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4,0;
  • если таких студентов нет, вывести соответствующее сообщение.

‘ style=’default’ collapse_link=’true’]

Листинг(исходник) программы:
[свернуть]


#include <iostream>
#include <ctype.h>
#include <conio.h>
#include <locale>
using namespace std;
void main()
{
setlocale(LC_ALL,"Rus");
int N = 10;
struct STUDENT {
char NAME[30];
int GROUP;
double SES[5];
};

STUDENT* STUD1 = new STUDENT[N];	// Выделение памяти под N числа структур типа STUDENT

//Заполнение структур
for(int i(0); i<N; i++)
{
cin.get();
cout<<"Введите имя и инициалы студента: ";
cin.getline(STUD1[i].NAME,30,\'\\n\');
cout<<"Введите номер группы студента: ";
cin>>STUD1[i].GROUP;
cout<<"Введите 5 оценок без пробел: ";
for(int j(0); j<5; j++) cin>>STUD1[i].SES[j];
system("cls");
}

//Сортировка массива структур по возрастанию, по полю GROUP 
for(int i(0); i<N; i++)
for(int j(0); j<N; j++)
if( STUD1[j].GROUP > STUD1[i].GROUP) swap(STUD1[j],STUD1[i]);

bool live = false;
for(int i(0); i<N; i++) // Проходим по всем структурам
{
double simple_average(0);	//Объявляем переменнуую для суммы всех баллов)

for(int j(0); j<5; j++)
{
simple_average += STUD1[i].SES[j];	// Нахождение общей суммы баллов студента
}
if( (simple_average/5) > 4.0 )	// Вывод информации о студентах у которых ср-й балл больше 4.0
{
cout<<"Фамилия: ";
for( int sName(0); sName < (int)strlen(STUD1[i].NAME); sName++)	// Проверка строки имени на пробел
{ 
if( isspace(STUD1[i].NAME[sName]) ) break;
else cout<<STUD1[i].NAME[sName];
}
cout<<"\\tНомер группы: "<<STUD1[i].GROUP<<endl;

live = true; // Меняем флаг, обозначающий существование сту-ов с баллом > 4.0
}
}
if(!live) cout<<"Студентов со средним баллом больше 4.0 не существует!";

delete [] STUD1;

_getch();
}

‘ style=’default’ collapse_link=’true’]

Автор:Павел Кадыров

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *