#include #include #include typedef struct student { char name[10]; char group[10]; int marks[5]; }; void pprint (struct student A) { printf ("%s \t %s \t %d, %d, %d, %d, %d\n",A.name, A.group, A.marks[0], A.marks[1],A.marks[2],A.marks[3],A.marks[4]); } int compare(const void *_a, const void *_b) { struct student *a = (struct student *)_a; struct student *b = (struct student *)_b; double ma=0.0, mb=0.0; for (int i=0;i<5;i++) { ma+=a->marks[i]; mb+=b->marks[i]; } //Для доступа к членам структуры с помощью указателя на структуру следует использовать оператор "стрелка". return ma-mb; } int main() { //struct student s[5]; struct student s[5]={{"Petrov","dddd-2",{1,2,3,2,3}}, {"Popov","dddd-2",{4,5,4,5,2}}, {"Smirnov","dddd-5",{5,2,5,5,3}}, {"Lupova","dddd-4",{1,2,3,2,4}}, {"Torko","dddd-3",{1,2,3,4,3}}}; /*int i = 0; while (i<5) { scanf("%10s", &s[i].name); scanf("%10s",&s[i].group); for (int j=0;j<5;j++) scanf("%d",&s[i].marks[j]); i++; }*/ for (int i=0;i<5;i++) { pprint (s[i]); } qsort(s, 5, sizeof(s[0]), compare); printf("\n"); for (int i=0;i<5;i++) { pprint (s[i]); } return 0; }