Отсортировать студентов по кафедрам и посчитать средний бал по кафедрам - 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();
}

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы