Описать структуру с именем STUDENT, содержащую следующие поля:
- фамилия и инициалы;
- номер группы;
- успеваемость (массив из пяти элементов).
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT, записи должны быть упорядочены по возрастанию номера группы;
- вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4.0;
- если таких студентов нет, вывести соответствующее сообщение.
Код программы:
//--------------------------------------------------------------------------- #include<iostream.h> #include<conio.h> #include<windows.h> #include<vcl.h> #pragma hdrstop #pragma argsused //--------------------------------------------------------------------------- char *rus(const char *text);//функция для распознавания русских символов int main(int argc, char* argv[]) { const int m=5,k=30; //объявление именованных констант int n,i,j,cnt=0; //объявление bool sort=1; // переменных struct STUDENT //объявление структуры { char fio[k]; //объявление int numb; //полей int ball[m]; //структуры double sum; }; STUDENT buffer; cout<<rus(" Введите количество структур STUDENT: ");cin>>n;//ввод кол-ва структур cout<<endl; STUDENT *Student=new STUDENT[n];//выделение в динамической памяти место под массив структур for(i=0;i<n;i++) { Student[i].sum=0; cout<<rus(" Введите фамилию и инициалы ")<<(i+1); cout<<rus(" студента: ");cin.ignore();cin.getline(Student[i].fio,k); cout<<rus(" Введите номер группы: ");cin>>Student[i].numb; cout<<rus(" Введите оценки:")<<endl; for(j=0;j<m;j++) { cout<<' '<<(j+1)<<rus(" оценка: ");cin>>Student[i].ball[j]; Student[i].sum+=Student[i].ball[j]; } Student[i].sum/=m; cout<<endl; cout<<rus(" Средняя оценка: ")<<Student[i].sum<<endl; cout<<endl; } while(sort) { sort=0; for(i=0;i<n-1;i++) if(Student[i].numb>Student[i+1].numb) { buffer=Student[i]; Student[i]=Student[i+1]; Student[i+1]=buffer; sort=1; } } cout<<endl; cout<<rus(" Список студентов упорядоченных по возрастанию номеров групп:\n\n"); for(i=0;i<n;i++) { cout<<rus(" Фамилия и инициалы студента: ")<<Student[i].fio<<endl; cout<<rus(" Номер группы: ")<<Student[i].numb<<endl; cout<<rus(" Оценки:")<<endl; for(j=0;j<m;j++) { cout<<' '<<(j+1)<<rus(" оценка: ")<<Student[i].ball[j]<<endl; } cout<<endl; cout<<rus(" Средняя оценка: ")<<Student[i].sum<<endl; cout<<endl; } cout<<rus("\n Список студентов, чей средний балл больше 4.0:")<<endl<<endl; for(i=0;i<n;i++) { if(Student[i].sum>4.0) { cout<<rus(" Фамилия и инициалы студента: ")<<Student[i].fio<<endl; cout<<rus(" Номер группы: ")<<Student[i].numb<<endl; cnt++; cout<<endl; } } if(0==cnt)cout<<rus(" Таких студентов нет!"); getch(); return 0; } //--------------------------------------------------------------------------- char bufrus[256]; char *rus(const char *text) { CharToOem(text,bufrus); return bufrus; } //---------------------------------------------------------------------------
Для уменьшения количества выводимой на экран информации, заполним только 2 структуры STUDENT.
Результат работы программы: