Advertisement
Solomid

ZSR 13

Feb 19th, 2020
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 10.38 KB | None | 0 0
  1. 2.
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. struct Grad {
  6.     char naziv[30];
  7.     int br_stanovnika;
  8. };
  9.  
  10. void visak(char* s)
  11. {
  12.     char* kraj = s;
  13.     while(*kraj != '\0') kraj++;
  14.     while(!(*kraj >= 'a' && *kraj <= 'z')) kraj--;
  15.     *(kraj+1) = '\0';
  16. }
  17.  
  18. int ucitaj(struct Grad *niz, int max)
  19. {
  20.     int i = 0;
  21.     FILE* extract = fopen("gradovi.txt","r");
  22.     if(!extract) {
  23.         printf("Greska pri otvaranju 'gradovi.txt'!");
  24.         exit(1);
  25.     }
  26.     while(fscanf(extract, "%[^0-9] %d", niz[i].naziv, &niz[i].br_stanovnika) == 2 && i < max) {
  27.         visak(niz[i].naziv);
  28.         i++;
  29.     }
  30.     fclose(extract);
  31.     return i;
  32. }
  33. void zapisi(struct Grad *niz, int vel, int min_st)
  34. {
  35.     FILE* izlaz = fopen("izlaz.txt","w");
  36.     if(!izlaz) {
  37.         printf("Greska pri otvaranju 'gradovi.txt'!");
  38.         exit(1);
  39.     }
  40.     for(int i = 0; i < vel; i++) {
  41.         if(niz[i].br_stanovnika > min_st) {
  42.             fprintf(izlaz,"%s\n",niz[i].naziv);
  43.         }
  44.     }
  45.     fclose(izlaz);
  46. }
  47. void ispis(struct Grad *niz, int vel, char c)
  48. {
  49.     char* poq;
  50.     for(int i = 0; i < vel; i++) {
  51.         poq = niz[i].naziv;
  52.         if(*poq == c)
  53.             printf("%s\n",niz[i].naziv);
  54.     }
  55. }
  56.  
  57. int main()
  58. {
  59.     /* Puno gradova */
  60.     int i, br_gradova;
  61.     struct Grad gradovi[10000];
  62.     FILE* ulaz = fopen("gradovi.txt", "w");
  63.  
  64.     char tekst[] = "A B C Grad";
  65.     for (i=10000; i<20000; i++) {
  66.         fprintf(ulaz, "%s %d", tekst, i);
  67.         fputc(10, ulaz);
  68.         tekst[0]++;
  69.         if (tekst[0] > 'Z') {
  70.             tekst[0] = 'A';
  71.             tekst[2]++;
  72.         }
  73.         if (tekst[2] > 'Z') {
  74.             tekst[2] = 'A';
  75.             tekst[4]++;
  76.         }
  77.         if (tekst[4] > 'Z') {
  78.             tekst[4] = 'A';
  79.         }
  80.     }
  81.     fclose(ulaz);
  82.  
  83.     br_gradova=ucitaj(gradovi, 10000);
  84.     ispis(gradovi, br_gradova, 'Z');
  85.     return 0;
  86. }
  87.  
  88. 3.
  89. #include <stdio.h>
  90. #include <string.h>
  91.  
  92. struct Student {
  93.     char ime[20];
  94.     char prezime[20];
  95. };
  96.  
  97. struct Ocjena {
  98.     struct Student s;
  99.     char predmet[100];
  100.     int ocjena;
  101. };
  102.  
  103. struct Predmet {
  104.     int id;
  105.     char naziv[100];
  106.     float prosjek;
  107. };
  108.  
  109. int uporedi(struct Student s1, struct Student s2)
  110. {
  111.     if(!(strcmp(s1.ime,s2.ime) || strcmp(s1.prezime,s2.prezime))) return 1;
  112.     return 0;
  113. }
  114. struct Student top_student(struct Ocjena o[],int vel)
  115. {
  116.     struct Student maxStudent;
  117.     struct Student tmp;
  118.     double prosjek=0;
  119.     double maxProsjek=0;
  120.     double suma=0;
  121.     int brojOcjena=0;
  122.     int i,j;
  123.     for(i=0; i<vel; i++) {
  124.         suma=0;
  125.         prosjek=0;
  126.         brojOcjena=0;
  127.         tmp=o[i].s;
  128.         for(j=0; j<vel; j++) {
  129.             if(uporedi(tmp,o[j].s)) {
  130.                 suma+=o[j].ocjena;
  131.                 brojOcjena++;
  132.             }
  133.         }
  134.         prosjek=suma/brojOcjena;
  135.         if(prosjek>maxProsjek) {
  136.             maxStudent=tmp;
  137.             maxProsjek=prosjek;
  138.         }
  139.         if(prosjek==maxProsjek) {
  140.             if(strcmp(maxStudent.prezime,tmp.prezime)>0) maxStudent=tmp;
  141.         }
  142.     }
  143.     return maxStudent;
  144. }
  145.  
  146. int main() {
  147.     printf("ZSR 13, Zadatak 3");
  148.     return 0;
  149. }
  150.  
  151. 4.
  152. #include <stdio.h>
  153. #include <stdlib.h>
  154. #include <string.h>
  155.  
  156. struct Grad {
  157.     char naziv[20];
  158.     int br_stanovnika;
  159. };
  160.  
  161. struct Drzava {
  162.     char naziv[50];
  163.     struct Grad glavni;
  164. };
  165.  
  166. struct Regija {
  167.     char naziv[50];
  168.     struct Grad glavni;
  169. };
  170.  
  171. int filtriraj(struct Drzava *niz1, int vel1,struct Regija *niz2, int vel2)
  172. {
  173.     for(int i = 0; i < vel1; i++) {
  174.         if(niz1[i].naziv[0] == 'Z') {
  175.             for(int k = i; k < vel1-1; k++) {
  176.                 niz1[k] = niz1[k+1];
  177.             }
  178.             vel1--;
  179.             i--;
  180.         }
  181.         if(i<0) continue;
  182.         if(niz1[i].glavni.br_stanovnika < 10000) {
  183.             for(int k = i; k < vel1-1; k++) {
  184.                 niz1[k] = niz1[k+1];
  185.             }
  186.             vel1--;
  187.             i--;
  188.         }
  189.         if(i<0) continue;
  190.         for(int j = 0; j < vel2; j++) {
  191.             if(!strcmp(niz1[i].glavni.naziv,niz2[j].glavni.naziv)) {
  192.                 for(int k = i; k < vel1-1; k++) {
  193.                     niz1[k] = niz1[k+1];
  194.                 }
  195.                 vel1--;
  196.                 i--;
  197.             }
  198.         }
  199.     }
  200.     return vel1;
  201. }
  202.  
  203. int ucitaj_drzave(struct Drzava *niz, int vel){
  204.     FILE* fp = fopen("drzave.dat","rb");
  205.     if(!fp){
  206.         printf("Greska pri otvaranju 'drzave.dat'!");
  207.         exit(1);
  208.     }
  209.     int i = 0;
  210.     while(!ferror(fp) && !feof(fp) && i < vel){
  211.         fread(&niz[i],sizeof(struct Drzava),1,fp);
  212.         i++;
  213.     }
  214.     fclose(fp);
  215.     return i;
  216. }
  217.  
  218. int ucitaj_regije(struct Regija *niz, int vel){
  219.     FILE* fp = fopen("regije.txt","r");
  220.     if(!fp){
  221.         printf("Greska pri otvaranju 'regije.txt'!");
  222.         exit(1);
  223.     }
  224.     int i = 0;
  225.     while(fscanf(fp, "%[^,],%[^,],%d\n",niz[i].naziv,niz[i].glavni.naziv,&niz[i].glavni.br_stanovnika) == 3 && i < vel){
  226.         niz[i].glavni.naziv[19] = '\0';
  227.         i++;
  228.     }
  229.     fclose(fp);
  230.     return i;
  231. }
  232. struct Grad max_glavni(struct Drzava *niz, int vel){
  233.     int i,j;
  234.     struct Grad max;
  235.     for(i = 0; i < vel; i++){
  236.         max = niz[i].glavni;
  237.         for(j = 0; j < vel; j++){
  238.             if(niz[j].glavni.br_stanovnika > max.br_stanovnika)
  239.                 max = niz[j].glavni;
  240.         }
  241.         return max;
  242.     }
  243. }
  244. void drzave_regije(struct Drzava *niz1, int vel1, struct Regija *niz2, int vel2){
  245.     struct Grad max = max_glavni(niz1,vel1);
  246.     for(int i = 0; i < vel2; i++){
  247.         if(!strcmp(max.naziv,niz2[i].glavni.naziv))
  248.             printf("%s\n",niz2[i].naziv);
  249.     }
  250. }
  251. void zapisi_regije(struct Regija *niz, int vel){
  252.     FILE *fp = fopen("regije.txt","w");
  253.     if(!fp){
  254.         printf("Greska pri otvaranju 'regije.txt'!");
  255.         exit(1);
  256.     }
  257.     int i = 0;
  258.     while(i < vel){
  259.         fprintf(fp,"%s,%s,%d\n",niz[i].naziv,niz[i].glavni.naziv,niz[i].glavni.br_stanovnika);
  260.         i++;
  261.     }
  262.     fclose(fp);
  263. }
  264.  
  265. int main()
  266. {
  267.     printf("ZSR 13, Zadatak 4");
  268.     return 0;
  269. }
  270.  
  271. 5.
  272. #include <stdio.h>
  273.  
  274. struct Zaposlenik{
  275.     char ime_prezime[40];
  276.     int id_zadatka;
  277.     int sektor;
  278. };
  279.  
  280. struct Zadaci{
  281.     int id;
  282.     char opis[100];
  283.     int sektor;
  284. };
  285.  
  286. void unesi(char niz[], int velicina) {
  287.     char znak = getchar();
  288.     if (znak == '\n') znak = getchar();
  289.     int i = 0;
  290.     while(i < velicina - 1 && znak != '\n') {
  291.         niz[i] = znak;
  292.         i++;
  293.         znak = getchar();
  294.     }
  295.     niz[i]='\0';
  296. }
  297. void zadatak_gotov(struct Zadaci *z, int id, int broj){
  298.     int i;
  299.     for(i = 0; i < broj; i++){
  300.         if(z[i].id == id){
  301.             for(int j = i; j < broj-1;j++){
  302.                 z[j] = z[j+1];
  303.             }
  304.         }
  305.     }
  306. }
  307. void obrisan_zad(struct Zaposlenik *z, int vel, int id){
  308.     for(int i = 0; i < vel; i++){
  309.         if(z[i].id_zadatka == id)
  310.         z[i].id_zadatka = -1;
  311.     }
  312. }
  313. void obrisi_zaposlenika(struct Zaposlenik *z, int id, int broj){
  314.     for(int i = id; i < broj-1; i++){
  315.         z[i] = z[i+1];
  316.     }
  317. }
  318. void azurirajZaposlene(struct Zaposlenik *z, int vel){
  319.     FILE* azuriraj = fopen("zaposleni.txt","w");
  320.     int i = 0;
  321.     while(i < vel){
  322.         fprintf(azuriraj,"%40s%d%d\n",z[i].ime_prezime,z[i].id_zadatka,z[i].sektor);
  323.         i++;
  324.     }
  325.     fclose(azuriraj);
  326. }
  327. void azurirajZadatke(struct Zadaci *z, int vel){
  328.     FILE* azuriraj = fopen("zaposleni.txt","w");
  329.     int i = 0;
  330.     while(i < vel){
  331.         fprintf(azuriraj,"%d%100s%d\n",z[i].id,z[i].opis,z[i].sektor);
  332.         i++;
  333.     }
  334.     fclose(azuriraj);
  335. }
  336. void noviZaposlenik(struct Zaposlenik *z, int vel){
  337.     printf("Ime i prezime: ");
  338.     unesi(z[vel].ime_prezime,40);
  339.     z[vel].id_zadatka = -1;
  340.     printf("Sektor: ");
  341.     scanf("%d",&z[vel].sektor);
  342. }
  343. int noviZadatak(struct Zadaci *niz1, int vel1, struct Zaposlenik *niz2, int vel2){
  344.     printf("ID: ");
  345.     scanf("%d",&niz1[vel1].id);
  346.     printf("Opis: ");
  347.     unesi(niz1[vel1].opis,100);
  348.     printf("Sektor: ");
  349.     scanf("%d",&niz1[vel1].sektor);
  350.     for(int i = 0; i < vel2; i++){
  351.         if((niz1[vel1].sektor == niz2[i].sektor) && (niz2[i].id_zadatka == -1)){
  352.             niz2[i].id_zadatka = niz1[vel1].id;
  353.             return 1;
  354.         }
  355.     }
  356.     return -1;
  357. }
  358.  
  359. int main() {
  360.     struct Zaposlenik zaposleni[1000];
  361.     struct Zadaci lista[1000];
  362.     FILE* upis = fopen("zaposleni.txt","r");
  363.     if(!upis){
  364.         printf("Greska pri otvaranju 'zaposleni.txt'!");
  365.         return 1;
  366.     }
  367.     int i = 0;
  368.     while(fscanf(upis,"%40s%d%d\n",zaposleni[i].ime_prezime,&zaposleni[i].id_zadatka,&zaposleni[i].sektor) == 3 && i<1000)
  369.         i++;
  370.     int vel1 = i;
  371.     fclose(upis);
  372.     upis = fopen("zadaci.txt","r");
  373.     if(!upis){
  374.         printf("Greska pri otvaranju 'zadaci.txt'!");
  375.         return 1;
  376.     }
  377.     i = 0;
  378.     while(fscanf(upis,"%d%100s%d\n",&lista[i].id,lista[i].opis,&lista[i].sektor) == 3 && i<1000)
  379.         i++;
  380.     int vel2 = i;
  381.     fclose(upis);
  382.     return 0;
  383. }
  384.  
  385. 10.
  386. #include <stdio.h>
  387. #include <string.h>
  388. struct Oblik {
  389.     char naziv[20];
  390.     int br_stranica;
  391.     float stranice[300];
  392. };
  393. double obim(struct Oblik oblik)
  394. {
  395.     int i;
  396.     double o=0;
  397.     for(i=0; i<oblik.br_stranica; i++) {
  398.         o+=oblik.stranice[i];
  399.     }
  400.     return o;
  401. }
  402. int dodaj_oblik(struct Oblik oblik)
  403. {
  404.     FILE* unos=fopen("oblici.dat","rb+");
  405.     if(!unos) return 0;
  406.     int n=0;
  407.     fread(&n,2,1,unos);
  408.     n++;
  409.     fseek(unos,0,SEEK_SET);
  410.     fwrite(&n,2,1,unos);
  411.     fseek(unos,0,SEEK_END);
  412.     fwrite(oblik.naziv,1,20,unos);
  413.     fwrite(&oblik.br_stranica,1,1,unos);
  414.     fwrite(oblik.stranice,4,oblik.br_stranica,unos);
  415.     fclose(unos);
  416.     return 1;
  417. }
  418.  
  419. int izbaci_duple()
  420. {
  421.     FILE* unos=fopen("oblici.dat","rb");
  422.     if(!unos) return 0;
  423.     struct Oblik oblici[1000]={0};
  424.     int i=0,j,k;
  425.     int n=0;
  426.     fread(&n,2,1,unos);
  427.     for(i=0; i<n; i++) {
  428.         fread(oblici[i].naziv,1,20,unos);
  429.         fread(&oblici[i].br_stranica,1,1,unos);
  430.         fread(oblici[i].stranice,4,oblici[i].br_stranica,unos);
  431.     }
  432.     for(i=0; i<n; i++) {
  433.         for(j=i+1; j<n; j++) {
  434.             if(strcmp(oblici[i].naziv,oblici[j].naziv)==0) {
  435.                 for(k=j; k<n-1; k++) {
  436.                     oblici[k]=oblici[k+1];
  437.                 }
  438.                 n--;
  439.                 j--;
  440.             }
  441.         }
  442.     }
  443.     fclose(unos);
  444.     unos=fopen("oblici.dat","wb");
  445.  
  446.     fwrite(&n,2,1,unos);
  447.     for(i=0; i<n; i++) {
  448.         fwrite(oblici[i].naziv,1,20,unos);
  449.         fwrite(&oblici[i].br_stranica,1,1,unos);
  450.         fwrite(oblici[i].stranice,4,oblici[i].br_stranica,unos);
  451.     }
  452.     fclose(unos);
  453.     return n;
  454. }
  455.  
  456. struct Oblik daj_najveci()
  457. {
  458.     FILE* citaj=fopen("oblici.dat","rb");
  459.  
  460.     struct Oblik oblici[1000]= {0};
  461.     int i=0;
  462.     int n=0;
  463.     fread(&n,2,1,citaj);
  464.     for(i=0; i<n; i++) {
  465.         fread(oblici[i].naziv,1,20,citaj);
  466.         fread(&oblici[i].br_stranica,1,1,citaj);
  467.         fread(oblici[i].stranice,4,oblici[i].br_stranica,citaj);
  468.     }
  469.     fclose(citaj);
  470.     int maxIndex=0;
  471.     int maxObim=obim(oblici[0]);
  472.     for(i=1; i<n; i++) {
  473.         if(obim(oblici[i])>maxObim) {
  474.             maxObim=obim(oblici[i]);
  475.             maxIndex=i;
  476.         }
  477.     }
  478.  
  479.     return oblici[maxIndex];
  480.  
  481. }
  482. void ispisiBroj()
  483. {
  484.     FILE* unos=fopen("oblici.dat","rb");
  485.     unsigned short a=0;
  486.     fread(&a,sizeof(a),1,unos);
  487.     printf("Broj oblika: %d\n",a);
  488.     struct Oblik oblici[10]= {0};
  489.     int i,n;
  490.     for(i=0; i<a; i++) {
  491.         fread(&oblici[i].naziv,20,1,unos);
  492.         fread(&oblici[i].br_stranica,1,1,unos);
  493.         n=oblici[i].br_stranica;
  494.         fread(&oblici[i].stranice,4,n,unos);
  495.  
  496.     }
  497.  
  498.     for(i=0; i<a; i++) {
  499.         printf("Naziv: %s Broj stranica: %d\n",oblici[i].naziv,oblici[i].br_stranica);
  500.     }
  501.     fclose(unos);
  502. }
  503. int main()
  504. {
  505.     //struct Oblik test = {"Sestougao", 6, {1,2,3,4,5,6}};
  506.     //dodaj_oblik(test);
  507.     //ispisiBroj();
  508.     //FILE * pravi= fopen("oblici.dat","wb");
  509.     struct Oblik rez = daj_najveci();
  510.     printf("%s %g %g %g\n", rez.naziv, rez.stranice[0], rez.stranice[1], rez.stranice[2]);
  511.     return 0;
  512. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement