Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define PUTANJA "C:\\Podaci\\BinarnaDat2.dat"
- #define PUTANJA2 "C:\\Podaci\\TekstualnaDat2.txt"
- typedef struct element *POKAZIVAC;
- typedef struct radnik NIZ[100];
- typedef struct radnik{
- char imePrezime[50];
- char grad[50];
- double plata;
- int godina;
- }RADNIK;
- typedef struct element {
- RADNIK podatak;
- POKAZIVAC sledeci;
- }ELEMENT;
- typedef struct glavaRep *LISTA;
- struct glavaRep{
- POKAZIVAC glava;
- POKAZIVAC rep;
- };
- void kreirajListu (LISTA *lista){
- (*lista)=malloc(sizeof(ELEMENT));
- (*lista)->glava=NULL;
- (*lista)->rep=NULL;
- }
- void ubaciElementNaPocetakListe (LISTA lista, RADNIK r){
- POKAZIVAC noviElement;
- noviElement=malloc(sizeof(ELEMENT));
- if (lista->glava==NULL){
- noviElement->podatak=r;
- noviElement->sledeci=NULL;
- lista->glava=noviElement;
- lista->rep=noviElement;
- }else {
- noviElement->podatak=r;
- noviElement->sledeci=lista->glava;
- lista->glava=noviElement;
- }
- }
- void unesiUBinarnuDat (){
- FILE *datoteka;
- int kraj=0;
- RADNIK r;
- datoteka=fopen(PUTANJA,"wb");
- if (datoteka==NULL){
- printf("Doslo je do greske prilikom otvaranja datoteke!\n");
- return;
- }
- do {
- printf("Unesite ime i prezime:\n");
- fflush(stdin);
- gets(&r.imePrezime);
- fflush(stdin);
- printf("Unesite naziv grada:\n");
- fflush(stdin);
- gets(&r.grad);
- fflush(stdin);
- printf("Unesite iznos plate:\n");
- scanf("%lf", &r.plata);
- printf("Unesite broj godina\n");
- scanf("%d", &r.godina);
- fwrite (&r,sizeof(RADNIK),1,datoteka);
- printf("Da li zelite da nastavite sa unosom radnika?(0-DA,1-NE)\n");
- scanf("%d", &kraj);
- }while (kraj==0);
- fclose (datoteka);
- }
- int netoPlata (RADNIK r){
- double netoPlata,PDV,nezaposlenost,penziono,zdravsteveno;
- PDV=r.plata*10/100;
- nezaposlenost=r.plata*1/100;
- penziono=r.plata*5/100;
- zdravsteveno=r.plata*7/100;
- netoPlata=r.plata-PDV-nezaposlenost-penziono-zdravsteveno;
- return netoPlata;
- }
- void dodeljivanjeNetoPlate (NIZ niz, int brojEl){
- int i;
- for(i=0;i<brojEl;i++){
- niz[i].plata=netoPlata(niz[i]);
- }
- }
- void izBinarneUNiz (NIZ niz, int *brojEl){
- FILE *datoteka;
- RADNIK r;
- datoteka=fopen(PUTANJA,"rb");
- if (datoteka==NULL){
- printf("Doslo je do greske prilikom otvaranja datoteke!\n");
- return;
- }
- while (fread (&r,sizeof(RADNIK),1,datoteka)!=0){
- if (r.godina<30){
- niz[*brojEl]=r;
- (*brojEl)++;
- }
- }
- dodeljivanjeNetoPlate(niz,*brojEl);
- fclose (datoteka);
- }
- void prikazRadnika (RADNIK r){
- printf("Ime i prezime: %s\nGrad: %s\nPlata: %.2lf\nGodina: %d\n", r.imePrezime,r.grad,r.plata,r.godina);
- }
- void prikazNiza(NIZ niz,int brojEl){
- int i;
- for(i=0;i<brojEl;i++){
- printf("%d. Radnik\n", i+1);
- prikazRadnika(niz[i]);
- printf("\n");
- }
- printf("\n");
- }
- void izNizaUListu (NIZ niz,int brojEl,LISTA lista){
- int i;
- int broj;
- for (i=0;i<brojEl;i++){
- if (broj=strcmp(niz[i].grad,"Beograd")==0){
- if (niz[i].plata<27000){
- niz[i].plata=niz[i].plata+niz[i].plata*10/100;
- }
- ubaciElementNaPocetakListe(lista,niz[i]);
- }
- }
- }
- void prikazListe (LISTA lista){
- POKAZIVAC pom;
- int i=1;
- pom=malloc(sizeof(ELEMENT));
- pom=lista->glava;
- while (pom!=NULL){
- printf("%d.Radnik\n",i);
- prikazRadnika(pom->podatak);
- i++;
- printf("\n");
- pom=pom->sledeci;
- }
- }
- int prosecnaZarada (LISTA lista){
- POKAZIVAC pom;
- pom=malloc(sizeof(ELEMENT));
- pom=lista->glava;
- int suma=0;
- int brojac=0;
- double prosek;
- while (pom!=NULL){
- suma=suma+pom->podatak.plata;
- brojac++;
- pom=pom->sledeci;
- }
- prosek=(double)suma/brojac;
- return prosek;
- }
- int main(void){
- NIZ niz;
- int brojEl=0;
- LISTA lista;
- double prosek;
- kreirajListu(&lista);
- //unesiUBinarnuDat();
- izBinarneUNiz(niz,&brojEl);
- //prikazNiza(niz,brojEl);
- izNizaUListu(niz,brojEl,lista);
- // prikazListe (lista);
- prosek=prosecnaZarada(lista);
- printf("prosek %.2lf\n", prosek);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement