Advertisement
Guest User

Untitled

a guest
Nov 24th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. // primer poziva programa ./zadatak5 ulaz.txt
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. struct student_t {
  7. char indeks[12];
  8. char ime[31];
  9. unsigned ocena;
  10. };
  11.  
  12. typedef struct student_t STUDENT;
  13.  
  14. FILE *otvori_datoteku(char *naziv_datoteke, char *rezim) {
  15. FILE *pdatoteka = fopen(naziv_datoteke, rezim);
  16. if (pdatoteka == NULL) {
  17. printf("Doslo je do greske prilikom otvaranja datoteke!\n");
  18. exit(2);
  19. }
  20. return pdatoteka;
  21. }
  22.  
  23. int ucitaj_studente(FILE *pulazna_datoteka, STUDENT *studenti) {
  24. int i = 0;
  25. while (fscanf(pulazna_datoteka, "%s %s %u", studenti[i].indeks, studenti[i].ime, &studenti[i].ocena) != EOF) {
  26. i++;
  27. }
  28. return i;
  29. }
  30.  
  31. void ispisi_studenta(FILE *pizlazna_datoteka, STUDENT student) {
  32. fprintf(pizlazna_datoteka, "%s %s %u\n", student.indeks, student.ime, student.ocena);
  33. }
  34.  
  35. void min_max_ocena(STUDENT *studenti, int broj_studenata) {
  36. unsigned min_ocena = studenti[0].ocena;
  37. unsigned max_ocena = studenti[0].ocena;
  38. double srednja_ocena = 0;
  39.  
  40. int i = 0;
  41. for (; i < broj_studenata; i++) {
  42. srednja_ocena += studenti[i].ocena;
  43. if (studenti[i].ocena < min_ocena) {
  44. min_ocena = studenti[i].ocena;
  45. } else if (studenti[i].ocena > max_ocena) {
  46. max_ocena = studenti[i].ocena;
  47. }
  48. }
  49.  
  50. printf("Srednja ocena je: %lf\n", srednja_ocena / (double) broj_studenata);
  51.  
  52. FILE *pnajmanja = otvori_datoteku("najmanja.txt", "w");
  53. FILE *pnajveca = otvori_datoteku("najveca.txt", "w");
  54. for (i = 0; i < broj_studenata; i++) {
  55. if (studenti[i].ocena == min_ocena) {
  56. ispisi_studenta(pnajmanja, studenti[i]);
  57. }
  58. if (studenti[i].ocena == max_ocena) {
  59. ispisi_studenta(pnajveca, studenti[i]);
  60. }
  61. }
  62. fclose(pnajmanja);
  63. fclose(pnajveca);
  64. }
  65.  
  66. int main(int argc, char *argv[]) {
  67.  
  68. if (argc != 2) {
  69. printf("Neispravan poziv programa. Primer poziva: ./zadatak5 ulaz.txt\n");
  70. exit(1);
  71. }
  72. STUDENT studenti[100];
  73.  
  74. FILE *pulazna_datoteka = otvori_datoteku(argv[1], "r");
  75. int broj_studenata = ucitaj_studente(pulazna_datoteka, studenti);
  76. fclose(pulazna_datoteka);
  77.  
  78. min_max_ocena(studenti, broj_studenata);
  79.  
  80.  
  81.  
  82. return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement