Advertisement
Ivan_12

izvestajNiz

Jun 3rd, 2016
351
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.62 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define PUTANJA "C:\\Podaci\\BinarnaDat.dat"
  6. #define PUTANJA2 "C:\\Podaci\\TekstualnaDat.txt"
  7.  
  8. typedef struct radnik {
  9. char imePrezime[50];
  10. char grad[50];
  11. double plata;
  12. int godina;
  13. }RADNIK;
  14.  
  15. typedef struct radnik NIZ[100];
  16.  
  17. typedef struct element *POKAZIVAC;
  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.  
  39. void punjenjeBinarneDat (){
  40. int kraj=0;
  41. RADNIK r;
  42. FILE *datoteka;
  43.  
  44. datoteka=fopen(PUTANJA,"wb");
  45.  
  46. if (datoteka==NULL){
  47. printf("Doslo je greske prilikom otvaranja datoteke!\n");
  48. return;
  49. }
  50.  
  51. do {
  52. printf("Unesite ime i prezime: \n");
  53. fflush(stdin);
  54. gets(&r.imePrezime);
  55. fflush(stdin);
  56.  
  57. printf("Unesite naziv grada: \n");
  58. fflush(stdin);
  59. gets(&r.grad);
  60. fflush(stdin);
  61.  
  62. printf("Unesite iznos plate: \n");
  63. scanf("%lf",&r.plata);
  64.  
  65. printf("Unesite broj godina:\n");
  66. scanf("%d", &r.godina);
  67.  
  68. fwrite(&r,sizeof(RADNIK),1,datoteka);
  69.  
  70. printf("Da li zelite da nastavite sa unosom?(0-DA,1-NE)\n");
  71. scanf("%d",&kraj);
  72.  
  73. }while (kraj==0);
  74.  
  75. fclose (datoteka);
  76. }
  77.  
  78. void prikaziRadnika (RADNIK r){
  79.  
  80. printf("Ime i prezime: %s\nGrad: %s\nPlata: %.2lf\nGodine: %d\n",r.imePrezime,r.grad,r.plata,r.godina);
  81.  
  82. }
  83.  
  84. void ubacivanjeNaPocetak (LISTA lista,RADNIK r){
  85. POKAZIVAC noviElement;
  86. noviElement=malloc(sizeof(ELEMENT));
  87.  
  88. if (lista->glava==NULL){
  89. noviElement->podatak=r;
  90. noviElement->sledeci=NULL;
  91. lista->glava=noviElement;
  92. lista->rep=noviElement;
  93. }else {
  94. noviElement->podatak=r;
  95. noviElement->sledeci=lista->glava;
  96. lista->glava=noviElement;
  97.  
  98. }
  99.  
  100. }
  101.  
  102. void izBinUListu (LISTA lista){
  103. RADNIK r;
  104. FILE *datoteka;
  105.  
  106. datoteka=fopen(PUTANJA,"rb");
  107.  
  108. if (datoteka==NULL){
  109. printf("Doslo je greske prilikom citanja datoteke!\n");
  110. return ;
  111. }
  112.  
  113. while (fread(&r,sizeof(RADNIK),1,datoteka)!=NULL){
  114. if (r.godina<30){
  115. r.plata=netoPlata(r);
  116. ubacivanjeNaPocetak(lista,r);
  117. }
  118. }
  119.  
  120. fclose(datoteka);
  121. }
  122.  
  123. void prikazListe (LISTA lista){
  124. POKAZIVAC pom;
  125. int i=1;
  126. pom=malloc(sizeof(ELEMENT));
  127. pom=lista->glava;
  128.  
  129. while (pom!=NULL){
  130. printf("%d. Radnik\n",i);
  131. prikaziRadnika(pom->podatak);
  132. i++;
  133. printf("\n");
  134. pom=pom->sledeci;
  135. }
  136.  
  137. }
  138.  
  139. void citanjeIzBinarne (){
  140. RADNIK r;
  141. FILE *datoteka;
  142.  
  143. datoteka=fopen(PUTANJA,"rb");
  144.  
  145. if (datoteka==NULL){
  146. printf("Doslo je do greske prilikom citanja iz datoteke!\n");
  147. return;
  148. }
  149.  
  150. while (fread(&r,sizeof(RADNIK),1,datoteka)!=0){
  151. prikaziRadnika(r);
  152. }
  153.  
  154. fclose (datoteka);
  155.  
  156.  
  157. }
  158.  
  159. int netoPlata (RADNIK r){
  160. double plata,PDV,nezaposlenost,zdravstveno,penziono;
  161.  
  162. PDV=r.plata*10/100;
  163. nezaposlenost=r.plata*1/100;
  164. zdravstveno=r.plata*7/100;
  165. penziono=r.plata*4/100;
  166.  
  167. plata=r.plata-PDV-nezaposlenost-zdravstveno-penziono;
  168.  
  169. return plata;
  170. }
  171.  
  172. void izListeUNiz (NIZ niz, int *brojEl,LISTA lista){
  173. POKAZIVAC pom;
  174. int broj;
  175. pom=malloc(sizeof(ELEMENT));
  176. pom=lista->glava;
  177.  
  178. while (pom!=NULL){
  179. if (broj=strcmp(pom->podatak.grad,"Beograd")==0){
  180. niz[*brojEl]=pom->podatak;
  181. (*brojEl)++;
  182. }
  183. pom=pom->sledeci;
  184. }
  185. }
  186.  
  187. void prikazNiza(NIZ niz,int brojEl){
  188. int i;
  189.  
  190. for (i=0;i<brojEl;i++){
  191. printf("%d.radnik\n",i+1);
  192. prikaziRadnika(niz[i]);
  193. printf("\n");
  194. }
  195.  
  196. }
  197.  
  198. int prosecnaZarada(NIZ niz,int brojEl){
  199. int i;
  200. double suma=0;
  201. int brojac=0;
  202. double zarada;
  203.  
  204. for(i=0;i<brojEl;i++){
  205. suma=suma+niz[i].plata;
  206. brojac++;
  207. }
  208.  
  209. zarada=suma/brojac;
  210.  
  211. return zarada;
  212.  
  213. }
  214.  
  215. int najmladjiRadnik (NIZ niz, int brojEl){
  216. int i;
  217. int min;
  218. min=niz[0].godina;
  219. for (i=0;i<brojEl;i++){
  220. if (niz[i].godina<min){
  221. min=niz[i].godina;
  222. }
  223. }
  224. return min;
  225. }
  226.  
  227. RADNIK najmadji (NIZ niz, int brojEl){
  228. int i;
  229. RADNIK r;
  230.  
  231. for (i=0;i<brojEl;i++){
  232. if (niz[i].godina==najmladjiRadnik(niz,brojEl)){
  233. r=niz[i];
  234. }
  235. }
  236. return r;
  237. }
  238.  
  239. int najvecaZarada (NIZ niz,int brojEl){
  240. int i;
  241. double max;
  242. max=niz[0].plata;
  243. for(i=0;i<brojEl;i++){
  244. if (niz[i].plata>max){
  245. max=niz[i].plata;
  246. }
  247. }
  248. return max;
  249. }
  250.  
  251. RADNIK zarada (NIZ niz,int brojEl){
  252. int i;
  253. RADNIK r;
  254. int max;
  255. max=najvecaZarada(niz,brojEl);
  256.  
  257.  
  258. for(i=0;i<brojEl;i++){
  259. if (niz[i].plata==max){
  260. r=niz[i];
  261. }
  262. }
  263.  
  264. return r;
  265. }
  266.  
  267. void pravljenjeIzvestaja (NIZ niz,int brojEl){
  268. FILE *datoteka;
  269. RADNIK r,r1;
  270. double prosecna;
  271.  
  272. datoteka=fopen(PUTANJA2,"w");
  273.  
  274. if (datoteka==NULL){
  275. printf("Doslo je do greske prilikom otvaranja datoteke!\n");
  276. return;
  277. }
  278. fprintf(datoteka,"*******************************************IZVESTAJ***************************\n\n\n");
  279. prosecna=prosecnaZarada(niz,brojEl);
  280. fprintf(datoteka,"Prosecna zarada je : %.2lf\n\n\n",prosecna);
  281. r=najmadji(niz,brojEl);
  282. fprintf(datoteka,"Najmadji radnik je :\nIme i prezime: %s\nGrad: %s\nPlata: %.2lf\nGodine: %d\n\n\n",r.imePrezime,r.grad,r.plata,r.godina);
  283. r1=zarada(niz,brojEl);
  284. fprintf(datoteka,"Radnik sa najvecom zaradom je :\nIme i prezime: %s\nGrad: %s\nPlata: %.2lf\nGodine: %d\n\n\n",r1.imePrezime,r1.grad,r1.plata,r1.godina);
  285. fprintf(datoteka,"*******************************************HVALA NA PAZNJI!!!****************\n\n\n");
  286.  
  287.  
  288. fclose (datoteka);
  289.  
  290. }
  291.  
  292. int main(void){
  293. NIZ niz;
  294. int brojEl=0;
  295. LISTA lista;
  296.  
  297. kreirajListu(&lista);
  298. //punjenjeBinarneDat();
  299. izBinUListu(lista);
  300. //prikazListe(lista);
  301. //citanjeIzBinarne();
  302. izListeUNiz(niz,&brojEl,lista);
  303. //prikazNiza(niz,brojEl);
  304.  
  305. pravljenjeIzvestaja(niz,brojEl);
  306. return 0;
  307. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement