File: Stare vježbe/vjezbe13/78__datoteka_primjer.c

  1. /*
  2.   78__datoteka_primjer.c
  3.   -----
  4.   Program ucitava tekstualnu datoteku u kojoj se nalaze linije slijedeceg
  5.   oblika:
  6.   ime_grada temperatura
  7.   Nakon sto se izracuna prosjecna vrijednost temperature medju onima koje
  8.   se nalaze u datoteci, program ispisuje imena onih gradova koji imaju
  9.   temperaturu vecu od prosjecne.
  10. */
  11.  
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14.  
  15. int main() {
  16. char ime_datoteke[256], grad[256];
  17. float temperatura, prosjek=0.0, koliko=0;
  18. FILE *fp;
  19.  
  20. printf("Unesite ime datoteke s podacima o gradovima i temperaturi: ");
  21. scanf("%s", ime_datoteke);
  22.  
  23. if((fp=fopen(ime_datoteke, "rt")) == NULL) {
  24. printf("Ne mogu otvoriti datoteku %s za citanje.\n", ime_datoteke);
  25. exit(1);
  26. }
  27.  
  28. while(!feof(fp)) {
  29. fscanf(fp, "%s%f%*c", grad, &temperatura);
  30. prosjek+=temperatura;
  31. ++koliko;
  32. }
  33. if(koliko)
  34. prosjek/=koliko;
  35.  
  36. printf("\nProsjecna temperatura iznosi: %.2f stupnjeva.\n", prosjek);
  37. printf("Slijedeci gradovi imaju temperaturu vecu od prosjecne:\n");
  38.  
  39. /* Obzirom da smo u prethodnoj while petlji dosli do kraja datoteke (EOF)
  40.   moramo FILE pointer fp postaviti ponovo na pocetak datoteke, sto
  41.   cemo napraviti pozivom funkcije rewind. */
  42. rewind(fp);
  43. while(!feof(fp)) {
  44. fscanf(fp, "%s%f%*c", grad, &temperatura);
  45. if(temperatura >= prosjek)
  46. printf("%s (%.2f)\n", grad, temperatura);
  47. }
  48.  
  49. fclose(fp);
  50.  
  51. return 0;
  52. }
  53.