• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

структура

  • Автор темы Art02
  • Дата начала
A

Art02

чтобы производились следующие действия: ввод с клавиатуры из 10 структур типа студент; записи должны быть упорядочены по возрастанию среднего балла



#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<string>

using namespace std;
struct Student
{
string FIO;
string Gruppa;
int Uspevaemost[5];
};

void Add (Student *W, int &n)
{
clrscr ();
cout<<"Dannie studenta:\n";
cout<<"FIO:"; cin>>W[n].FIO;
cout<<"Gruppa:"; cin>>W[n].Gruppa;
int i;
for (i=0;i<5;i++)
{cout<<"Uspevaemost["<<i <<"]:"; cin>>W[n].Uspevaemost;}
n++;
}
void Find (Student *W, int n)
{
string y;
cout<<"Vvedite Gruppu:";
cin>>y;
cout<<"FIO Gruppa Uspevaemost\n";
for (int i=0; i<n; i++)
if (W.FIO==y)
cout<<W.FIO<<" "<<W.Gruppa<<" "<<W.Uspevaemost<<"\n";
getch ();
}
void Print (Student *W, int n)
{
clrscr ();
cout<<"Spisok studentov :\n";
if (n==0)
{
cout<<"Spisok pust";
getch ();
return;
}
cout<<"FIO Gruppa Uspevaemost\n";
for (int i=0; i<n; i++)
{
cout<<W.FIO<<" "<<W.Gruppa<<" "<<W.Uspevaemost<<"\n";
}
getch ();
}

void Uporyid (Student *W, int n)
{
clrscr ();
cout << n;
cout << "Uporyid\n";
Student temp;
for(int i=0; i<n; i++)
for(int j=n-2; j>=i; j--)
if (W[j].Gruppa>W[j+1].Gruppa)
{
temp=W[j];
W[j]=W[j+1];
W[j+1]=temp;
}

getch ();
}


void main ()
{ Student *A=new Student [10];
int n=0, j;
char ch;



const int N_max=10;
Student *W=new Student[N_max];
do

{
clrscr ();
cout<<"1 - Dobavlenie\n";
cout<<"2 - Pechat studentov\n";
cout<<"3 - Naiti studenta\n";
cout<<"4- Uporyid\n";
cout<<"0 - Vixod\n";
ch=getch ();
switch (ch)
{
case '1': Add (W,n); break;
case '2': Print (W,n); break;
case '3': Find (W,n); break;
case '4': Uporyid (W,n); break;

}
}
while (ch!='0');
 
R

Rififi

Art02

записи должны быть упорядочены по возрастанию среднего балла

Код:
struct less
{
bool operator()(const Student& s1, const Student& s2) const
{
return avg(s1.Uspevaemost) < avg(s2.Uspevaemost);
}

template <typename T, size_t N>
double avg(const T (&arr)[N]) const
{
return static_cast<double>(std::accumulate(arr, arr + N, T())) / N;
}
};

...

std::vector<Student> ss;
std::sort(ss.begin(), ss.end(), less());
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!