Advertisement
Guest User

Untitled

a guest
Aug 24th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. #ifndef DEBUG
  6. #define DEBUG(...)printf(__VA_ARGS__)
  7. #endif
  8.  
  9.  
  10. /* Potrebno je napisati program koji učitava datoteku ˝ponuda.txt˝. U datoteci se nalaze podaci o ponudama turističke agencije.
  11. Svaki redak odgovara jednoj ponudi i sljedećeg je oblika
  12. ->destinacija->opis ponude \$ cijena \$
  13. pri čemu je cijena zapisna kao realan broj s dvije decimale. Npr. ->Atena->Let avionom \$3100.99\$
  14. Svaka linija sazdrži najviše 1000 znakova. Učitani podaci se sortiraju prema odredištu ulazno abecednim redom u novu datoteku
  15. "destinacije.txt" te se ispisuju na ekranu. */
  16.  
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <string.h>
  20.  
  21. #ifndef INFILE
  22. #define INFILE "ponuda.txt"
  23. #endif
  24.  
  25. struct lista {
  26. char grad[30];
  27. char pon [1000];
  28. };
  29.  
  30. int main () {
  31.  
  32. FILE *ponuda, *destinacije;
  33.  
  34. int i, j, n=1; //n je brojač, postavljen je na jedan kako bi se brojao i prvi red u datoteci
  35. char c;
  36.  
  37. ponuda=fopen(INFILE, "r");
  38. if (ponuda == NULL) {
  39. printf("Datoteku je nemoguce otvoriti.");
  40. exit(0);
  41. }
  42.  
  43. c=fgetc(ponuda);
  44. while (c != EOF) {
  45. if (c == '\n')
  46. n++; //brojimo prazne redove, ali kako je n postavljen na 1, pocinje od jedan, što znači da uključuje i prvu liniju
  47. c=fgetc(ponuda);
  48. }
  49.  
  50. rewind(ponuda); //prethodno while petljom smo došli do kraja datoteke pa je vraćamo na početak
  51. struct lista s[n], temp;
  52. for (i=0; i<n; i++) {
  53. fscanf(ponuda, " -> %s -> %[^\n]", s[i].grad, s[i].pon);
  54. c=fgetc(ponuda);
  55. }
  56.  
  57. fclose(ponuda);
  58.  
  59. destinacije=fopen("destinacije.txt", "w");
  60. if (destinacije == NULL) {
  61. printf("Datoteku nije moguce otvoriti.");
  62. exit(0);
  63. }
  64.  
  65. for (i=0; i<n; i++) {
  66. fprintf(destinacije, "-> %s -> %s\n",s[i].grad, s[i].pon);
  67. }
  68.  
  69. for(j = 0;j<n;j++)
  70. for(i = 0;i<n-1;i++){
  71. if(strcmp(s[i].grad,s[i+1].grad)>0){
  72. temp = s[i];
  73. s[i] = s[i+1];
  74. s[i+1] = temp;
  75. }
  76.  
  77. }
  78.  
  79. rewind(destinacije);
  80.  
  81. for(i=0; i<n; i++) {
  82. fprintf(destinacije, " -> %s -> %s\n",s[i].grad, s[i].pon);
  83. }
  84. fclose(destinacije);
  85.  
  86. destinacije=fopen("destinacije.txt", "r");
  87.  
  88. c=fgetc(destinacije);
  89. while (c != EOF) {
  90. printf("%c", c);
  91. c=fgetc(destinacije);
  92. }
  93.  
  94. fclose(destinacije);
  95.  
  96. return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement