Advertisement
Solomid

4.zsr13

Feb 19th, 2020
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.39 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct Grad {
  6.     char naziv[20];
  7.     int br_stanovnika;
  8. };
  9.  
  10. struct Drzava {
  11.     char naziv[50];
  12.     struct Grad glavni;
  13. };
  14.  
  15. struct Regija {
  16.     char naziv[50];
  17.     struct Grad glavni;
  18. };
  19.  
  20. int filtriraj(struct Drzava *niz1, int vel1,struct Regija *niz2, int vel2)
  21. {
  22.     for(int i = 0; i < vel1; i++) {
  23.         if(niz1[i].naziv[0] == 'Z') {
  24.             for(int k = i; k < vel1-1; k++) {
  25.                 niz1[k] = niz1[k+1];
  26.             }
  27.             vel1--;
  28.             i--;
  29.         }
  30.         if(i<0) continue;
  31.         if(niz1[i].glavni.br_stanovnika < 10000) {
  32.             for(int k = i; k < vel1-1; k++) {
  33.                 niz1[k] = niz1[k+1];
  34.             }
  35.             vel1--;
  36.             i--;
  37.         }
  38.         if(i<0) continue;
  39.         for(int j = 0; j < vel2; j++) {
  40.             if(!strcmp(niz1[i].glavni.naziv,niz2[j].glavni.naziv)) {
  41.                 for(int k = i; k < vel1-1; k++) {
  42.                     niz1[k] = niz1[k+1];
  43.                 }
  44.                 vel1--;
  45.                 i--;
  46.             }
  47.         }
  48.     }
  49.     return vel1;
  50. }
  51.  
  52. int ucitaj_drzave(struct Drzava *niz, int vel){
  53.     FILE* fp = fopen("drzave.dat","rb");
  54.     if(!fp){
  55.         printf("Greska pri otvaranju 'drzave.dat'!");
  56.         exit(1);
  57.     }
  58.     int i = 0;
  59.     while(!ferror(fp) && !feof(fp) && i < vel){
  60.         fread(&niz[i],1,sizeof(struct Drzava),fp);
  61.         i++;
  62.     }
  63.     fclose(fp);
  64.     return i;
  65. }
  66.  
  67. int ucitaj_regije(struct Regija *niz, int vel){
  68.     FILE* fp = fopen("regije.txt","r");
  69.     if(!fp){
  70.         printf("Greska pri otvaranju 'regije.txt'!");
  71.         exit(1);
  72.     }
  73.     int i = 0;
  74.     while(fscanf(fp, "%[^,],%[^,],%d\n",niz[i].naziv,niz[i].glavni.naziv,&niz[i].glavni.br_stanovnika) == 3 && i < vel){
  75.         i++;
  76.     }
  77.     fclose(fp);
  78.     return i;
  79. }
  80. struct Grad max_glavni(struct Drzava *niz, int vel){
  81.     int i,j;
  82.     struct Grad max;
  83.     for(i = 0; i < vel; i++){
  84.         max = niz[i].glavni;
  85.         for(j = 0; j < vel; j++){
  86.             if(niz[j].glavni.br_stanovnika > max.br_stanovnika)
  87.                 max = niz[j].glavni;
  88.         }
  89.         return max;
  90.     }
  91. }
  92. void drzave_regije(struct Drzava *niz1, int vel1, struct Regija *niz2, int vel2){
  93.     struct Grad max = max_glavni(niz1,vel1);
  94.     for(int i = 0; i < vel2; i++){
  95.         if(!strcmp(max.naziv,niz2[i].glavni.naziv))
  96.             printf("%s\n",niz2[i].naziv);
  97.     }
  98. }
  99. void zapisi_regije(struct Regija *niz, int vel){
  100.     FILE *fp = fopen("regije.txt","w");
  101.     if(!fp){
  102.         printf("Greska pri otvaranju 'regije.txt'!");
  103.         exit(1);
  104.     }
  105.     int i = 0;
  106.     while(i < vel){
  107.         fprintf(fp,"%s,%s,%d\n",niz[i].naziv,niz[i].glavni.naziv,niz[i].glavni.br_stanovnika);
  108.         i++;
  109.     }
  110.     fclose(fp);
  111. }
  112.  
  113. int main()
  114. {
  115.     printf("ZSR 13, Zadatak 4");
  116.     return 0;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement