Работа со структурами: сортировка массива студентов - C (СИ)
Формулировка задачи:
10.1.
Вводится массив структур Student. У каждого студента есть, как минимум, имя и массив из 5 оценок.
Необходимо сгруппировать массив по 4 группам: отличники (все 5), хорошисты (хотя бы одна 4),троечники(хотя бы одна 3) и двоечники(хотя бы одна 2).
В каждой группе - отсортировать студентов по алфавиту.
10.2.
Удалить всех, у кого больше двух 2-к.
Для каждого студента вывести его средний балл.
У меня есть кое-какие наработки , но если честно кажется, что всё неправильно. помогите дописать , пожалуйста
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
struct Student
{
char* FIO[255];
int ocenka[5];
char* group[255];
};
int main()
{
int n,p;
printf("Vvedite kolichestvo studentov");
scanf ("%d",n);
struct Student = (struct Student*)malloc(sizeof(struct Student) * n);
struct Student tmp;
Zapolnenie (FIO,ocenka,n);
SortirovkaOcenok (ocenka,group, n)
}
void Zapolnenie (char* FIO, int ocenka, int n)
{
for(int i=0; i<=n; i++)
{
puts("Vvedite FIO\n");
gets("%s", Student[i].FIO);
for (int j=0; j<=5; j++)
{
printf("Vvedite ocenki (5)\n");
scanf("%d", &Student[i].ocenka[j]);
}
}
}
void SortirovkaOcenok (int ocenka, char* group, int n)
{
int temp5=0, temp4=0, temp3=0, temp2=0;
for (int i=0;i<=n;i++)
{
for (int j=0; j<=5; j++)
{
if (student[i].ocenka[j]=5)
temp5++;
else if (student[i].ocenka[j]=4)
temp4++;
else if (student[i].ocenka[j]=3)
temp3++;
else if (student[i].ocenka[j]=2)
temp2++;
}
if (temp5=5)
student[i].group="Otlichnik";
else if (temp4=>1)
student[i].group="Horoshist";
else if (temp3=>1)
student[i].group="Troechnik";
else if (temp2=>1)
student[i].group="Dvoechnik";
}
}
void SortirovkaNames (char* FIO, char* group, int n)
for (int k=0;k<=4;k++)
for(int i=0; i<=n ; i++)
for(j=0; j<i ; j++)
if(strcmp( box[ j ].name, box[ j+1 ].name ) > 0)
{
tmp = box[ j ];
box[ j ]= box[ j+1 ];
box[ j+1 ]= tmp;
}Решение задачи: «Работа со структурами: сортировка массива студентов»
textual
Листинг программы
struct Student
{
char* FIO[255];
int ocenka[5];
double* avg;
};