Вариант 3

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

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

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

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

 

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

//---------------------------------------------------------------------------
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<windows.h>
#include<vcl.h>
#pragma hdrstop
#pragma argsused
//---------------------------------------------------------------------------
char *rus(const char *text);//функция для распознавания русских символов
int compare(const void *student1,const void *student2); //объявление функции для сортировки
const int m=5,k=30;  //объявление именованных констант
struct student       //объявление структуры
  {
   char fio[k];        //объявление
   int numb;           //полей
   int ball[m];        //структуры
  };
int main(int argc, char* argv[])
 {
  int i,j,n,cnt=0;   //объявление переменных
  cout<<rus(" Введите количество структур STUDENT: ");cin>>n;//ввод кол-ва структур
  cout<<endl;
  student *Student=new student[n];//выделение в динамической памяти место под массив структур
  for(i=0;i<n;i++)
   {
    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];

     }
    cout<<endl;
   }
 qsort(Student,n,sizeof(student),compare); //вызов функции для сортировки
 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("\n Список студентов имеющих хотя бы одну оценку 2:")<<endl<<endl;
 for(i=0;i<n;i++)      //поиск
  {                    //студентов
   for(j=0;j<m;j++)    //имеющих
   if(Student[i].ball[j]==2)  //хотя бы одну оценку 2
    {
     cout<<rus(" Фамилия и инициалы студента: ")<<Student[i].fio<<endl; //вывод
     cout<<rus(" Номер группы: ")<<Student[i].numb<<endl;   //запрошенной
     cnt++;                                                //информации
     cout<<endl;
    }
  }                    //если таких студентов нет выводится сообщение
 if(0==cnt)cout<<rus(" Таких студентов нет!");
 getch();
 return 0;
}
//---------------------------------------------------------------------------
int compare(const void *student1,const void *student2) //функция для сортировки
 {
  return strcmp((reinterpret_cast<const student*>(student1))->fio,
                (reinterpret_cast<const student*>(student2))->fio);
 }
//---------------------------------------------------------------------------
char bufrus[256];
char *rus(const char *text)
 {
  CharToOem(text,bufrus);
  return bufrus;
 }
//---------------------------------------------------------------------------

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

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

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

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