File: Stare vježbe/vjezbe12/76b__file_medalje.c
/* 76a__file_utakmice.c Naredba fscanf. ----- Neka je zadana ulazna datoteka "Medalje.txt" koja sadrži popis sportaša koji su osvojili medalje na Zimskoj Olimpijadi. U jednom retku datoteke je zapisano ime sportaša i medalja koju je osvojio na nekom olimpijskom natjecanju. Napišite program koji pronalazi i ispisuje sportaša koji je osvojio najviše zlatnih medalja. Npr. za ulaznu datoteku Janica srebro Ivica srebro Anja bronca Janica zlato Janica zlato Mihaela zlato program treba ispisati Najvise zlatnih medalja ima: Janica! */ #include <stdio.h> int main ( void ) { FILE *source; char src_name[80], skijasica[80], temp[80], najskijasica[80]="", medalja[10]; int n=0, br, najbr=0, i, j; printf ("Unesite ime polazne datoteke: "); scanf ("%s", src_name); if ((source=fopen(src_name, "rt")) == NULL) { printf ("Ne mogu otvoriti datoteku %s za citanje.\n", src_name ); exit(1); } while (fscanf (source, "%s %s ", skijasica, medalja) == 2) { printf (".%s %s.\n", skijasica, medalja ); ++n; } printf ("Ukupno ima %d zapisa.\n", n ); j=0; while (j<n) { rewind(source); i=0; br=0; while (fscanf (source, "%s %s ", skijasica, medalja) == 2 && i<j) { ++i; } // nasli smo i-tu skijasicu rewind(source); while (fscanf (source, "%s %s ", temp, medalja) == 2) { if ( (strcmp(skijasica, temp)==0) && (strcmp(medalja, "zlato")==0) ) ++br; } // prebrojili smo zlata za i-tu skijasicu if(br > najbr) { najbr = br; strcpy(najskijasica, skijasica); } printf ("%d. skijasica %s, zlatnih medalja %d.\n", j +1, skijasica, br ); ++j; } printf ("Najvise zlatnih medalja osvojila je %s. Ukupno %d zlata.\n", najskijasica, najbr ); fclose (source); return 0; }
|