#include <STDIO.h>
#define MaxName 20
#define MaxNumber 10
#define MaxGrade 5
#define MaxGroup 10
#define CheckGrade 2
struct student
{
char Name[MaxName];//имя студента
char Number[MaxNumber];//номер группы
int Grade[MaxGrade];//оценки студента
};
int main(void)
{
struct student Group[MaxGroup];//массив из 10-ти студентов
struct student Change;//переменная для сортировки
int a,b,c;//индксы
//
for(a=0;a<MaxGroup;a++)
{
//вводим имя
printf("\nStudent %d \nName:",a+1);
scanf("%s",Group[a].Name);
//вводим группу
printf("Group:");
scanf("%s",Group[a].Number);
//вводим оценки
for(b=0;b<MaxGrade;b++)
{
printf("Grade[%2d]:",b+1);
scanf("%d",&Group[a].Grade[ b ]);
}
}
//начинаем сортировку
a=0;
while(a<(MaxGroup-1))
{
b=0;
while(b<MaxName)
if(Group[a].Name[ b ]>Group[a+1].Name[ b ])//больше обмениваем
{
Change=Group[a];
Group[a]=Group[a+1];
Group[a+1]=Change;
b=MaxName;
a=0;
}else
{
if(Group[a].Name[ b ]==Group[a+1].Name[ b ])//равны идем по имени дальше
{
b++;
}
else
{
a++;//иначе переходим к следующему
b=MaxName;
}
}
}
//выводим отсортированный список
printf("\nList One");
for(a=0;a<MaxGroup;a++)
printf("\nStudent: %s group: %s",Group[a].Name,Group[a].Number);
//поиск двоечников
c=0;
printf("\n\nList Two");
for(a=0;a<MaxGroup;a++)
{
//
b=MaxGrade;
while(b>0)
if(Group[a].Grade[--b]==CheckGrade)
{
//контролируемая оценка совпала выводим фамилию и номер группы
printf("\nStudent: %s group: %s",Group[a].Name,Group[a].Number);
c++;
b=0;
}
}
if(c==0)printf("\nNot Found");//нет двоечников
scanf("%s");//так защита от ДОСа в ХР
return 0;
}
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.