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\\BinarnaDat.dat"
- #define PUTANJA2 "C:\\Podaci\\TekstualnaDat.txt"
- typedef struct radnik {
- char imePrezime[50];
- char grad[50];
- double plata;
- int godina;
- }RADNIK;
- typedef struct radnik NIZ[100];
- typedef struct element *POKAZIVAC;
- 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 punjenjeBinarneDat (){
- int kraj=0;
- RADNIK r;
- FILE *datoteka;
- datoteka=fopen(PUTANJA,"wb");
- if (datoteka==NULL){
- printf("Doslo je 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?(0-DA,1-NE)\n");
- scanf("%d",&kraj);
- }while (kraj==0);
- fclose (datoteka);
- }
- void prikaziRadnika (RADNIK r){
- printf("Ime i prezime: %s\nGrad: %s\nPlata: %.2lf\nGodine: %d\n",r.imePrezime,r.grad,r.plata,r.godina);
- }
- void ubacivanjeNaPocetak (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 izBinUListu (LISTA lista){
- RADNIK r;
- FILE *datoteka;
- datoteka=fopen(PUTANJA,"rb");
- if (datoteka==NULL){
- printf("Doslo je greske prilikom citanja datoteke!\n");
- return ;
- }
- while (fread(&r,sizeof(RADNIK),1,datoteka)!=NULL){
- if (r.godina<30){
- r.plata=netoPlata(r);
- ubacivanjeNaPocetak(lista,r);
- }
- }
- fclose(datoteka);
- }
- void prikazListe (LISTA lista){
- POKAZIVAC pom;
- int i=1;
- pom=malloc(sizeof(ELEMENT));
- pom=lista->glava;
- while (pom!=NULL){
- printf("%d. Radnik\n",i);
- prikaziRadnika(pom->podatak);
- i++;
- printf("\n");
- pom=pom->sledeci;
- }
- }
- void citanjeIzBinarne (){
- RADNIK r;
- FILE *datoteka;
- datoteka=fopen(PUTANJA,"rb");
- if (datoteka==NULL){
- printf("Doslo je do greske prilikom citanja iz datoteke!\n");
- return;
- }
- while (fread(&r,sizeof(RADNIK),1,datoteka)!=0){
- prikaziRadnika(r);
- }
- fclose (datoteka);
- }
- int netoPlata (RADNIK r){
- double plata,PDV,nezaposlenost,zdravstveno,penziono;
- PDV=r.plata*10/100;
- nezaposlenost=r.plata*1/100;
- zdravstveno=r.plata*7/100;
- penziono=r.plata*4/100;
- plata=r.plata-PDV-nezaposlenost-zdravstveno-penziono;
- return plata;
- }
- void izListeUNiz (NIZ niz, int *brojEl,LISTA lista){
- POKAZIVAC pom;
- int broj;
- pom=malloc(sizeof(ELEMENT));
- pom=lista->glava;
- while (pom!=NULL){
- if (broj=strcmp(pom->podatak.grad,"Beograd")==0){
- niz[*brojEl]=pom->podatak;
- (*brojEl)++;
- }
- pom=pom->sledeci;
- }
- }
- void prikazNiza(NIZ niz,int brojEl){
- int i;
- for (i=0;i<brojEl;i++){
- printf("%d.radnik\n",i+1);
- prikaziRadnika(niz[i]);
- printf("\n");
- }
- }
- int prosecnaZarada(NIZ niz,int brojEl){
- int i;
- double suma=0;
- int brojac=0;
- double zarada;
- for(i=0;i<brojEl;i++){
- suma=suma+niz[i].plata;
- brojac++;
- }
- zarada=suma/brojac;
- return zarada;
- }
- int najmladjiRadnik (NIZ niz, int brojEl){
- int i;
- int min;
- min=niz[0].godina;
- for (i=0;i<brojEl;i++){
- if (niz[i].godina<min){
- min=niz[i].godina;
- }
- }
- return min;
- }
- RADNIK najmadji (NIZ niz, int brojEl){
- int i;
- RADNIK r;
- for (i=0;i<brojEl;i++){
- if (niz[i].godina==najmladjiRadnik(niz,brojEl)){
- r=niz[i];
- }
- }
- return r;
- }
- int najvecaZarada (NIZ niz,int brojEl){
- int i;
- double max;
- max=niz[0].plata;
- for(i=0;i<brojEl;i++){
- if (niz[i].plata>max){
- max=niz[i].plata;
- }
- }
- return max;
- }
- RADNIK zarada (NIZ niz,int brojEl){
- int i;
- RADNIK r;
- int max;
- max=najvecaZarada(niz,brojEl);
- for(i=0;i<brojEl;i++){
- if (niz[i].plata==max){
- r=niz[i];
- }
- }
- return r;
- }
- void pravljenjeIzvestaja (NIZ niz,int brojEl){
- FILE *datoteka;
- RADNIK r,r1;
- double prosecna;
- datoteka=fopen(PUTANJA2,"w");
- if (datoteka==NULL){
- printf("Doslo je do greske prilikom otvaranja datoteke!\n");
- return;
- }
- fprintf(datoteka,"*******************************************IZVESTAJ***************************\n\n\n");
- prosecna=prosecnaZarada(niz,brojEl);
- fprintf(datoteka,"Prosecna zarada je : %.2lf\n\n\n",prosecna);
- r=najmadji(niz,brojEl);
- 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);
- r1=zarada(niz,brojEl);
- 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);
- fprintf(datoteka,"*******************************************HVALA NA PAZNJI!!!****************\n\n\n");
- fclose (datoteka);
- }
- int main(void){
- NIZ niz;
- int brojEl=0;
- LISTA lista;
- kreirajListu(&lista);
- //punjenjeBinarneDat();
- izBinUListu(lista);
- //prikazListe(lista);
- //citanjeIzBinarne();
- izListeUNiz(niz,&brojEl,lista);
- //prikazNiza(niz,brojEl);
- pravljenjeIzvestaja(niz,brojEl);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement