09.12.2010, 19:23
общий
это ответ
Здравствуйте, Посетитель - 347391!
Первый вариант программы:
Приложение:
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#define NUMBER 10
struct Student{
char fName[30];
char lName[30];
int group;
int grades[5];
int medgrade;
};
int cmp(const void* p1, const void* p2)
{
if ( ((Student*)p1)->group > ((Student*)p2)->group) return 1;
if ( ((Student*)p1)->group < ((Student*)p2)->group) return -1;
return strcmp( ((Student*)p1)->lName, ((Student*)p2)->lName);
}
int main()
{
Student aStudent[NUMBER];
//Заполняем
for (int i = 0; i<NUMBER; i++){
printf("\nStudent %i\nEnter name: ", i+1);
scanf("%s", aStudent[i].fName);
printf("\nStudent %i\nEnter last name: ", i+1);
scanf("%s", aStudent[i].lName);
printf("Enter group: ");
scanf("%i", &(aStudent[i].group));
for (int j = 0; j<5; j++){
printf("Enter grades %i: ", j+1);
scanf("%i", &(aStudent[i].grades[j]));
}
}
//Сортируем
qsort(aStudent, NUMBER, sizeof(Student), cmp);
float totalmed;
for(int i =0; i < NUMBER; i++){
double mid = 0;
for (int j = 0; j<5; j++)
{
mid += aStudent[i].grades[j];
totalmed+= aStudent[i].grades[j];
}
mid /= 5.0;
printf("\nStudent %i\nName: %s\ngroup: %i", i, aStudent[i].lName, aStudent[i].group);
aStudent[i].medgrade=mid;
};
printf("\Our best students are:\n");
totalmed=totalmed/(5.*NUMBER);
for(int i =0; i < NUMBER; i++)
{
if(aStudent[i].medgrade>totalmed)
printf("\nStudent %i\nName: %s\ngroup: %i", i, aStudent[i].lName, aStudent[i].group);
}
getch();
return 0;
}