Advertisement
Ivan_12

ivan.datoteke

May 31st, 2016
484
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.99 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define PUTANJA "C:\\Podaci\\BinarnaDat2.dat"
  6. #define PUTANJA2 "C:\\Podaci\\TekstualnaDat2.txt"
  7.  
  8. typedef struct element *POKAZIVAC;
  9.  
  10. typedef struct radnik NIZ[100];
  11.  
  12. typedef struct radnik{
  13.     char imePrezime[50];
  14.     char grad[50];
  15.     double plata;
  16.     int godina;
  17. }RADNIK;
  18.  
  19. typedef struct element {
  20.     RADNIK podatak;
  21.     POKAZIVAC sledeci;
  22. }ELEMENT;
  23.  
  24. typedef struct glavaRep *LISTA;
  25.  
  26. struct glavaRep{
  27.     POKAZIVAC glava;
  28.     POKAZIVAC rep;
  29. };
  30.  
  31.  
  32. void kreirajListu (LISTA *lista){
  33.     (*lista)=malloc(sizeof(ELEMENT));
  34.     (*lista)->glava=NULL;
  35.     (*lista)->rep=NULL;
  36. }
  37.  
  38. void ubaciElementNaPocetakListe (LISTA lista, RADNIK r){
  39.     POKAZIVAC noviElement;
  40.     noviElement=malloc(sizeof(ELEMENT));
  41.  
  42.     if (lista->glava==NULL){
  43.         noviElement->podatak=r;
  44.         noviElement->sledeci=NULL;
  45.         lista->glava=noviElement;
  46.         lista->rep=noviElement;
  47.    
  48.     }else {
  49.         noviElement->podatak=r;
  50.         noviElement->sledeci=lista->glava;
  51.         lista->glava=noviElement;
  52.     }
  53.  
  54. }
  55.  
  56. void unesiUBinarnuDat (){
  57.     FILE *datoteka;
  58.     int kraj=0;
  59.     RADNIK r;
  60.  
  61.     datoteka=fopen(PUTANJA,"wb");
  62.  
  63.     if (datoteka==NULL){
  64.         printf("Doslo je do greske prilikom otvaranja datoteke!\n");
  65.         return;
  66.     }
  67.     do {
  68.         printf("Unesite ime i prezime:\n");
  69.         fflush(stdin);
  70.         gets(&r.imePrezime);
  71.         fflush(stdin);
  72.  
  73.         printf("Unesite naziv grada:\n");
  74.         fflush(stdin);
  75.         gets(&r.grad);
  76.         fflush(stdin);
  77.  
  78.         printf("Unesite iznos plate:\n");
  79.         scanf("%lf", &r.plata);
  80.  
  81.         printf("Unesite broj godina\n");
  82.         scanf("%d", &r.godina);
  83.  
  84.         fwrite (&r,sizeof(RADNIK),1,datoteka);
  85.  
  86.         printf("Da li zelite da nastavite sa unosom radnika?(0-DA,1-NE)\n");
  87.         scanf("%d", &kraj);
  88.    
  89.     }while (kraj==0);
  90.    
  91.  
  92.     fclose (datoteka);
  93. }
  94.  
  95. int netoPlata (RADNIK r){
  96.     double netoPlata,PDV,nezaposlenost,penziono,zdravsteveno;
  97.  
  98.     PDV=r.plata*10/100;
  99.     nezaposlenost=r.plata*1/100;
  100.     penziono=r.plata*5/100;
  101.     zdravsteveno=r.plata*7/100;
  102.  
  103.     netoPlata=r.plata-PDV-nezaposlenost-penziono-zdravsteveno;
  104.  
  105.     return netoPlata;
  106.  
  107.  
  108. }
  109.  
  110. void dodeljivanjeNetoPlate (NIZ niz, int brojEl){
  111.     int i;
  112.  
  113.     for(i=0;i<brojEl;i++){
  114.         niz[i].plata=netoPlata(niz[i]);
  115.     }
  116. }
  117.  
  118. void izBinarneUNiz (NIZ niz, int *brojEl){
  119.     FILE *datoteka;
  120.     RADNIK r;
  121.  
  122.     datoteka=fopen(PUTANJA,"rb");
  123.  
  124.     if (datoteka==NULL){
  125.         printf("Doslo je do greske prilikom otvaranja datoteke!\n");
  126.         return;
  127.     }
  128.  
  129.     while (fread (&r,sizeof(RADNIK),1,datoteka)!=0){
  130.         if (r.godina<30){
  131.             niz[*brojEl]=r;
  132.             (*brojEl)++;
  133.         }
  134.     }
  135.  
  136.     dodeljivanjeNetoPlate(niz,*brojEl);
  137.  
  138.     fclose (datoteka);
  139.  
  140. }
  141.  
  142. void prikazRadnika (RADNIK r){
  143.    
  144.     printf("Ime i prezime: %s\nGrad: %s\nPlata: %.2lf\nGodina: %d\n", r.imePrezime,r.grad,r.plata,r.godina);
  145. }
  146.  
  147. void prikazNiza(NIZ niz,int brojEl){
  148.     int i;
  149.  
  150.     for(i=0;i<brojEl;i++){
  151.         printf("%d. Radnik\n", i+1);
  152.         prikazRadnika(niz[i]);
  153.         printf("\n");
  154.     }
  155.     printf("\n");
  156. }
  157.  
  158. void izNizaUListu (NIZ niz,int brojEl,LISTA lista){
  159.     int i;
  160.     int broj;
  161.  
  162.     for (i=0;i<brojEl;i++){
  163.         if (broj=strcmp(niz[i].grad,"Beograd")==0){
  164.             if (niz[i].plata<27000){
  165.                 niz[i].plata=niz[i].plata+niz[i].plata*10/100;
  166.             }
  167.             ubaciElementNaPocetakListe(lista,niz[i]);
  168.         }
  169.        
  170.  
  171.     }
  172.  
  173.  
  174. }
  175.  
  176. void prikazListe (LISTA lista){
  177.     POKAZIVAC pom;
  178.     int i=1;
  179.     pom=malloc(sizeof(ELEMENT));
  180.     pom=lista->glava;
  181.  
  182.     while (pom!=NULL){
  183.         printf("%d.Radnik\n",i);
  184.         prikazRadnika(pom->podatak);
  185.         i++;
  186.         printf("\n");
  187.         pom=pom->sledeci;
  188.     }
  189.  
  190. }
  191.  
  192. int prosecnaZarada (LISTA lista){
  193.     POKAZIVAC pom;
  194.     pom=malloc(sizeof(ELEMENT));
  195.     pom=lista->glava;
  196.     int suma=0;
  197.     int brojac=0;
  198.     double prosek;
  199.  
  200.     while (pom!=NULL){
  201.         suma=suma+pom->podatak.plata;
  202.         brojac++;
  203.         pom=pom->sledeci;
  204.     }
  205.     prosek=(double)suma/brojac;
  206.     return prosek;
  207.  
  208. }
  209.  
  210. int main(void){
  211.     NIZ niz;
  212.     int brojEl=0;
  213.     LISTA lista;
  214.     double prosek;
  215.  
  216.     kreirajListu(&lista);
  217.  
  218.     //unesiUBinarnuDat();
  219.     izBinarneUNiz(niz,&brojEl);
  220.     //prikazNiza(niz,brojEl);
  221.     izNizaUListu(niz,brojEl,lista);
  222. //  prikazListe (lista);
  223.     prosek=prosecnaZarada(lista);
  224.     printf("prosek %.2lf\n", prosek);
  225.    
  226.     return 0;
  227. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement