Advertisement
Crackbone

SP-Zadatak1

Oct 18th, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.28 KB | None | 0 0
  1. /*Napisati program koji prvo pročita koliko redaka ima datoteka, tj. koliko ima studenata zapisanih u datoteci.
  2. Nakon toga potrebno je dinamički alocirati prostor za niz struktura studenata (ime, prezime, bodovi) i učitati iz datoteke sve zapise.
  3. Na ekran ispisati ime, prezime,apsolutni i relativni broj bodova.
  4. Napomena:Svaki redak datoteke sadrži ime i prezime studenta, te broj bodovana kolokviju.relatvan_br_bodova = br_bodova/max_br_bodova*100*/
  5.  
  6. #define _CRT_SECURE_NO_WARNINGS
  7. #define MAX_NAME 40
  8. #include<stdio.h>
  9. #include<string.h>
  10.  
  11.  
  12. typedef student;
  13. typedef struct student* pstudent;
  14. int NumberOfStudents(char *);
  15. int ReadFile(char *,pstudent);
  16.  
  17.  
  18. struct student
  19. {
  20.     char ime[MAX_NAME];
  21.     char prezime[MAX_NAME];
  22.     int bodovi;
  23. };
  24.  
  25.  
  26. int main()
  27. {
  28.     int lines = 0;
  29.     int maxBod = 0;
  30.     char file_name[256] = { 0 };
  31.     pstudent list = NULL;
  32.  
  33.  
  34.     printf("Napisite ime datoteke(studenti)\n");
  35.     scanf(" %s", file_name, 256);
  36.  
  37.     lines = NumberOfStudents(file_name);
  38.     if (-1 == lines)
  39.         printf("Greska!");
  40.     else if (0 == lines)
  41.         printf("U datoteci nema studenata");
  42.     else
  43.         printf("U datoteci se nalazi %d studenata", lines);
  44.  
  45.     list = (pstudent)malloc(sizeof(struct student)*lines);
  46.     maxBod = ReadFile(file_name, list);
  47.  
  48.     for (int i = 0; i < lines; i++)
  49.     {
  50.        
  51.         printf("\n%d. %s %s %d / %d = %f", i + 1, list[i].ime, list[i].prezime, list[i].bodovi, maxBod, ((float)list[i].bodovi / maxBod) * 100);
  52.     }
  53.  
  54.     getchar();
  55.     getchar();
  56.     return 0;
  57. }
  58. //Funkcija za izbrojit studente u fileu
  59. int NumberOfStudents(char *file_name)
  60. {
  61.     int counter = 0;
  62.     char string[256];
  63.     FILE *fb;
  64.     fb = fopen(file_name, "r");
  65.     if (NULL == fb)
  66.     {
  67.         printf("Greska  prilikom otvaranja datoteke");
  68.         return -1;
  69.     }
  70.     else
  71.     {
  72.         while (!feof(fb))
  73.         {
  74.             fgets(string, 256, fb);
  75.             if (strlen(string) != 0)
  76.                 counter++;
  77.         }
  78.         fclose(fb);
  79.         return counter;
  80.     }
  81. }
  82.  
  83. //Funkcija za citanje studenata
  84. int ReadFile(char *file_name, pstudent P)
  85. {
  86.     int maxBod = 0;
  87.     FILE *fb;
  88.     fb = fopen(file_name, "r");
  89.     if (NULL == fb)
  90.     {
  91.         printf("Greska prilikom otvaranja datoteke");
  92.         return -1;
  93.     }
  94.     else
  95.     {
  96.         while (!feof(fb))
  97.         {
  98.             fscanf(fb, " %s %s %d", P->ime, P->prezime, &P->bodovi);
  99.             if (P->bodovi > maxBod)
  100.                 maxBod = P->bodovi;
  101.             P++;
  102.         }
  103.         fclose(fb);
  104.         return maxBod;
  105.     }
  106.  
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement