Advertisement
gavrilo93

student code

Nov 15th, 2012
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.41 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. struct stud{
  4.     int indeks;
  5.     char ime[20];
  6.     int ocena[34];
  7.     int brojispita;
  8. };
  9.  
  10. void ucitajStudente(struct stud *s, int *brojstud, char *dat){
  11.         int indeks,ocena;
  12.         char ime[20];
  13.         int j, k;
  14.         FILE *p = fopen(dat, "r");
  15.         while(fscanf(p, "%d %s %d", &indeks, ime, &ocena)!=EOF){
  16.                 if(ocena>=6 && ocena <=10){
  17.                         for(k = 0;k<*brojstud;k++)
  18.                                 if(s[k].indeks == indeks){
  19.                                         j = s[k].brojispita;
  20.                                         s[k].ocena[j] = ocena;
  21.                                         s[k].brojispita++;
  22.                                         break;
  23.                                 }
  24.                         if(k==*brojstud){
  25.                                 s[k].indeks = indeks;
  26.                                 s[k].ocena[0] = ocena;
  27.                                 s[k].brojispita=1;
  28.                                 j=0;
  29.                                 while(ime[j]){
  30.                                         s[k].ime[j]=ime[j];
  31.                                         j++;
  32.                                 }
  33.                                 s[k].ime[j] = '\0';
  34.                                 (*brojstud)++;
  35.                         }
  36.                 }
  37.         }
  38.         fclose(p);
  39. }
  40.  
  41. float prosek(struct stud s){
  42.         int i, suma=0;
  43.         for(i=0;i<s.brojispita;i++){
  44.                 suma+=s.ocena[i];
  45.         }
  46.         return (float)suma/(float)s.brojispita;
  47. }
  48.  
  49. void nadjiMinMax(struct stud *s, int brojstud, int *min, int *max){
  50.         int i;
  51.         *min = 0;
  52.         *max = 0;
  53.         for(i=1;i<brojstud;i++){
  54.                 if(prosek(s[i])>prosek(s[*max]))
  55.                         *max = i;
  56.                 if(prosek(s[i])<prosek(s[*min]))
  57.                         *min = i;
  58.         }
  59. }
  60.  
  61. void upisi(struct stud s, char *naziv){
  62.         int i;
  63.         FILE *p = fopen(naziv, "w");
  64.         for(i = 0; i<s.brojispita;i++){
  65.                 fprintf(p,"%d %s %d\n",s.indeks, s.ime, s.ocena[i]);
  66.         }
  67.         fprintf(p,"Prosecna ocena: %f\n",prosek(s));
  68.         fclose(p);
  69. }
  70.  
  71. int main(int brArg, char *nizarg[]){
  72.     struct stud s[30];
  73.     int brojstud = 0, min, max;
  74.     ucitajStudente(s, &brojstud,nizarg[1]);
  75.     nadjiMinMax(s, brojstud, &min, &max);
  76.     upisi(s[min], "najnizi.txt");
  77.     upisi(s[max], "najvisi.txt");
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement