Вариант 2

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

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

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

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

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

//---------------------------------------------------------------------------
#include<iostream.h>
#include<conio.h>
#include<windows.h>
#include<math.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,all_posit;
 struct STUDENT
  {
   char fio[k];
   int numb;
   int ball[m];
   float 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].sum>Student[i+1].sum)
    {
     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 или 5:")<<endl<<endl;
 for(i=0;i<n;i++)
  {
   all_posit=true;
   for(j=0;j<n;j++)
   if(Student[i].ball[j]<4)
    {
     all_posit=false;
     break;
    }
   if(all_posit)
    {
     cout<<rus(" Фамилия и инициалы студента: ")<<Student[i].fio<<endl;
     cout<<rus(" Номер группы: ")<<Student[i].numb<<endl;
     cout<<endl;
     cnt++;
    }
  }
 if(0==cnt)cout<<rus(" Таких студентов нет!");
 getch();
 return 0;
}
//---------------------------------------------------------------------------
char bufrus[256];
char *rus(const char *text)
 {
  CharToOem(text,bufrus);
  return bufrus;
 }
//---------------------------------------------------------------------------

Для уменьшения количества выводимой на экран информации, заполним только 2 структуры STUDENT.

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

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

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