Вариант 1

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

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

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

  1. ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT, записи должны быть упорядочены по возрастанию номера группы;
  2. вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4.0;
  3. если таких студентов нет, вывести соответствующее сообщение.

Код программы:

//---------------------------------------------------------------------------
#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.

Результат работы программы:

Результат работы. Первый вариант. Структуры

Вариант 2
error: Content is protected !!