Отсортировать студентов по кафедрам и посчитать средний бал по кафедрам - C (СИ)
Формулировка задачи:
Помогите написать прогу:ввести фамилию,кафедру,специальность,оценку студента.Отсортировать студентов по кафедрам и посчитать средний бал по кафедрам.Заранее спасибо.
Вот пробывал сам,но в конце не получается:
#include<string.h>
#include<conio.h>
#include<stdio.h>
struct STUDENT
{
char kafedra[20],famil[20],spec[20];
int ocenka;
};
void main()
{
int n,i,j,s; char c; float k;
struct STUDENT arr[10];
clrscr();i=0;
while(c!='N')
{
puts("Vvesti dannue pro studenta(Y/N)");
scanf("%s",&c); if (tolower(c)=='n') {break;}
printf("Vvedite famil %u stud-",i);
scanf("%s",&arr[i].famil);
printf("Vvedite kafedru %u stud-",i);
scanf("%s",&arr[i].kafedra);
printf("Vvedite ocenku %u stud-",i);
scanf("%d",&arr[i].ocenka);
printf("%s,%s,%d\n",arr[i].famil,arr[i].kafedra,arr[i].ocenka);
i=i+1;
printf("%d\n",i);}
n=i;
printf("%d\n",i);
s=0;
for (i=0;i<n;i++)
{s=s+arr[i].ocenka;}
k=(float)s/n;
printf("sredniy ball-%f\n",k);
for (i=0;i<n;i++)
for (j=0;j<n,j!=i;j++)
{
if(arr[i].kafedra==arr[j].kafedra)
{ printf("Famil[%d]-%s\n",j,arr[j].famil);printf("Famil[%d]-%s\n",i,arr[i].famil); }
else {printf ("Famil[%d]-%s",j,arr[j].famil);}
} getch();
}Решение задачи: «Отсортировать студентов по кафедрам и посчитать средний бал по кафедрам»
textual
Листинг программы
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include <ctype.h>
struct STUDENT
{
char kafedra[20],famil[20],spec[20];
int ocenka;
};
void main()
{
int n,i,j,s, count; char c;
struct STUDENT arr[10];
struct STUDENT temp;
clrscr();
i=0;
while(c!='N')
{
puts("Vvesti dannue pro studenta(Y/N)");
scanf("%s",&c); if (tolower(c)=='n') {break;}
printf("Vvedite famil %u stud-",i+1);
scanf("%s",&arr[i].famil);
printf("Vvedite kafedru %u stud-",i+1);
scanf("%s",&arr[i].kafedra);
printf("Vvedite ocenku %u stud-",i+1);
scanf("%d",&arr[i].ocenka);
printf("%s,%s,%d\n",arr[i].famil,arr[i].kafedra,arr[i].ocenka);
i=i+1;
printf("%d\n",i);}
n=i;
// ñîðòèðîâêГ*
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
{
if(!strcmp(arr[i].kafedra, arr[j].kafedra) && i==j-1)
{
i++;
j++;
}
if(!strcmp(arr[i].kafedra, arr[j].kafedra) && i!=j-1 && j<n)
{
temp=arr[i+1];
arr[i+1]=arr[j];
arr[j]=temp;
i++;
}
}
s=0;
count=0;
printf("Kafedra: %s\n", arr[0].kafedra);
for(i=0; i<n; i++)
{
printf("%s\n", arr[i].famil);
count++;
s+=arr[i].ocenka;
if(strcmp(arr[i].kafedra, arr[i+1].kafedra) && i!=n-1)
{
printf("Srednii ball kafedry %s: %f\n", arr[i].kafedra, (float)s/count);
printf("Kafedra: %s\n", arr[i+1].kafedra);
s=0;
count=0;
}
}
printf("Srednii ball kafedry %s: %f", arr[i-1].kafedra, (float)s/count);
getch();
}