Advertisement
alexarcan

struct_alin

Jan 31st, 2014
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.54 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <errno.h>
  4.  
  5. struct stud
  6. {
  7.     char name[25];
  8.     float avg;
  9.     int grade;
  10. };
  11. typedef struct stud stud_t;
  12.  
  13. void average(FILE *pf)
  14. {
  15.     int m,n;
  16.     stud_t student[201],aux;
  17.     int i=0,j;
  18.     while(1)
  19.     {
  20.         if(fscanf(pf, "%[^,]", student[i].name)!=1)              
  21.             break;
  22.         fgetc(pf);
  23.         for(j=1;j<=10;j++)                                  
  24.         {
  25.             if(fscanf(pf,"%d",&(student[i].grade))==1)      
  26.                 student[i].avg=student[i].avg+student[i].grade;
  27.             else
  28.             break;
  29.             fgetc(pf);  
  30.         if(student[i].grade<5){
  31.         fscanf(pf,"*[^\n]");
  32.                 break;}
  33.         }
  34.         if(j==11)                                            
  35.         {
  36.             student[i].avg /= 10;              
  37.             i++;                                            
  38.         }
  39.         else
  40.         student[i].avg = 0;
  41.        
  42.     }
  43.  
  44.     for(m=0;m<i;m++)
  45.         for(n=m+1;n<=i;n++)
  46.             if(student[m].avg<student[n].avg)
  47.             {
  48.                 aux=student[m];
  49.                 student[m]=student[n];
  50.                 student[n]=aux;
  51.             }
  52.     for(m=0;m<i;m++)
  53.     printf("The average of %s : %f\n",student[m].name,student[m].avg);
  54.  
  55. }
  56. int main(void)
  57. {
  58.     FILE *f;
  59.     f=fopen("students.csv","r");
  60.     if(!f){
  61.     perror("Error on opening the file");
  62.     return errno;}
  63.     average(f);
  64.     if(fclose(f)){
  65.         perror("Error on closing the file");
  66.     return errno;}
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement