Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #ifndef DEBUG
- #define DEBUG(...)printf(__VA_ARGS__)
- #endif
- /* Potrebno je napisati program koji učitava datoteku ˝ponuda.txt˝. U datoteci se nalaze podaci o ponudama turističke agencije.
- Svaki redak odgovara jednoj ponudi i sljedećeg je oblika
- ->destinacija->opis ponude \$ cijena \$
- pri čemu je cijena zapisna kao realan broj s dvije decimale. Npr. ->Atena->Let avionom \$3100.99\$
- Svaka linija sazdrži najviše 1000 znakova. Učitani podaci se sortiraju prema odredištu ulazno abecednim redom u novu datoteku
- "destinacije.txt" te se ispisuju na ekranu. */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #ifndef INFILE
- #define INFILE "ponuda.txt"
- #endif
- struct lista {
- char grad[30];
- char pon [1000];
- };
- int main () {
- FILE *ponuda, *destinacije;
- int i, j, n=1; //n je brojač, postavljen je na jedan kako bi se brojao i prvi red u datoteci
- char c;
- ponuda=fopen(INFILE, "r");
- if (ponuda == NULL) {
- printf("Datoteku je nemoguce otvoriti.");
- exit(0);
- }
- c=fgetc(ponuda);
- while (c != EOF) {
- if (c == '\n')
- n++; //brojimo prazne redove, ali kako je n postavljen na 1, pocinje od jedan, što znači da uključuje i prvu liniju
- c=fgetc(ponuda);
- }
- rewind(ponuda); //prethodno while petljom smo došli do kraja datoteke pa je vraćamo na početak
- struct lista s[n], temp;
- for (i=0; i<n; i++) {
- fscanf(ponuda, " -> %s -> %[^\n]", s[i].grad, s[i].pon);
- c=fgetc(ponuda);
- }
- fclose(ponuda);
- destinacije=fopen("destinacije.txt", "w");
- if (destinacije == NULL) {
- printf("Datoteku nije moguce otvoriti.");
- exit(0);
- }
- for (i=0; i<n; i++) {
- fprintf(destinacije, "-> %s -> %s\n",s[i].grad, s[i].pon);
- }
- for(j = 0;j<n;j++)
- for(i = 0;i<n-1;i++){
- if(strcmp(s[i].grad,s[i+1].grad)>0){
- temp = s[i];
- s[i] = s[i+1];
- s[i+1] = temp;
- }
- }
- rewind(destinacije);
- for(i=0; i<n; i++) {
- fprintf(destinacije, " -> %s -> %s\n",s[i].grad, s[i].pon);
- }
- fclose(destinacije);
- destinacije=fopen("destinacije.txt", "r");
- c=fgetc(destinacije);
- while (c != EOF) {
- printf("%c", c);
- c=fgetc(destinacije);
- }
- fclose(destinacije);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement