Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Napisati program koji prvo pročita koliko redaka ima datoteka, tj. koliko ima studenata zapisanih u datoteci.
- Nakon toga potrebno je dinamički alocirati prostor za niz struktura studenata (ime, prezime, bodovi) i učitati iz datoteke sve zapise.
- Na ekran ispisati ime, prezime,apsolutni i relativni broj bodova.
- Napomena:Svaki redak datoteke sadrži ime i prezime studenta, te broj bodovana kolokviju.relatvan_br_bodova = br_bodova/max_br_bodova*100*/
- #define _CRT_SECURE_NO_WARNINGS
- #define MAX_NAME 40
- #include<stdio.h>
- #include<string.h>
- typedef student;
- typedef struct student* pstudent;
- int NumberOfStudents(char *);
- int ReadFile(char *,pstudent);
- struct student
- {
- char ime[MAX_NAME];
- char prezime[MAX_NAME];
- int bodovi;
- };
- int main()
- {
- int lines = 0;
- int maxBod = 0;
- char file_name[256] = { 0 };
- pstudent list = NULL;
- printf("Napisite ime datoteke(studenti)\n");
- scanf(" %s", file_name, 256);
- lines = NumberOfStudents(file_name);
- if (-1 == lines)
- printf("Greska!");
- else if (0 == lines)
- printf("U datoteci nema studenata");
- else
- printf("U datoteci se nalazi %d studenata", lines);
- list = (pstudent)malloc(sizeof(struct student)*lines);
- maxBod = ReadFile(file_name, list);
- for (int i = 0; i < lines; i++)
- {
- 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);
- }
- getchar();
- getchar();
- return 0;
- }
- //Funkcija za izbrojit studente u fileu
- int NumberOfStudents(char *file_name)
- {
- int counter = 0;
- char string[256];
- FILE *fb;
- fb = fopen(file_name, "r");
- if (NULL == fb)
- {
- printf("Greska prilikom otvaranja datoteke");
- return -1;
- }
- else
- {
- while (!feof(fb))
- {
- fgets(string, 256, fb);
- if (strlen(string) != 0)
- counter++;
- }
- fclose(fb);
- return counter;
- }
- }
- //Funkcija za citanje studenata
- int ReadFile(char *file_name, pstudent P)
- {
- int maxBod = 0;
- FILE *fb;
- fb = fopen(file_name, "r");
- if (NULL == fb)
- {
- printf("Greska prilikom otvaranja datoteke");
- return -1;
- }
- else
- {
- while (!feof(fb))
- {
- fscanf(fb, " %s %s %d", P->ime, P->prezime, &P->bodovi);
- if (P->bodovi > maxBod)
- maxBod = P->bodovi;
- P++;
- }
- fclose(fb);
- return maxBod;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement