Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct data {
- int dzien;
- int miesiac;
- int rok;
- };
- struct pracownik {
- char nazwisko[30];
- struct data data_u;
- struct data data_z;
- char plec; // k lub m
- double pobory;
- };
- double funkcja();
- void dopisz_p();
- main()
- {
- dopisz_p();
- printf("Razem: %lf", funkcja());
- }
- void dopisz_p()
- {
- struct pracownik p;
- FILE* plik= fopen("kadry.txt","a");
- printf("Podaj nazwisko:\n");
- fflush(stdin);
- scanf("%s", p.nazwisko);
- // gets(p.nazwisko);
- printf("Podaj rok urodzenia:\n");
- fflush(stdin);
- scanf("%d",&p.data_u.rok);
- do
- {
- printf("Podaj miesiac urodzenia:\n");
- fflush(stdin);
- scanf("%d",&p.data_u.miesiac);
- }while (!(p.data_u.miesiac>0 && p.data_u.miesiac<12));
- do
- {
- printf("Podaj dzien urodzenia:\n");
- fflush(stdin);
- scanf("%d",&p.data_u.dzien);
- }while (!(p.data_u.dzien>0 && p.data_u.dzien<31));//miesiace/lata przestepne
- printf("Podaj rok zatrudnienia:\n");
- fflush(stdin);
- scanf("%d",&p.data_z.rok);
- do
- {
- printf("Podaj miesiac zatrudnienia:\n");
- fflush(stdin);
- scanf("%d",&p.data_z.miesiac);
- }while (!(p.data_z.miesiac>0 && p.data_z.miesiac<12));
- do
- {
- printf("Podaj dzien zatrudnienia:\n");
- fflush(stdin);
- scanf("%d",&p.data_z.dzien);
- }while (!(p.data_z.dzien>0 && p.data_z.dzien<31));//miesiace/lata przestepne
- do
- {
- printf("Podaj plec (k/m):\n");
- fflush(stdin);
- scanf("%c",&p.plec);
- } while(p.plec!='k'&& p.plec!='m');
- do
- {
- printf("Podaj pobory:\n");
- fflush(stdin);
- scanf("%lf",&p.pobory);
- } while(p.pobory <= 0);
- fwrite(&p, sizeof(struct pracownik),1,plik);
- fclose(plik);
- }
- double funkcja()
- {
- struct pracownik p;
- FILE *plik1=fopen("kadry.txt","r");
- FILE *plik2=fopen("emeryci.txt","w");
- FILE *temp=fopen("temp.txt","w");
- double zwraca=0;
- int pom, em=0;
- struct data dzis={16,1,2018};
- while(fread(&p, sizeof(struct pracownik), 1, plik1))
- {
- em=0;
- if(p.plec=='k')
- pom=60;
- else pom=65;
- if(p.data_u.rok+pom<dzis.rok)
- em=1;
- else if(p.data_u.rok+pom==dzis.rok && p.data_u.miesiac<dzis.miesiac)
- em=1;
- else if(p.data_u.rok+pom==dzis.rok && p.data_u.miesiac==dzis.miesiac && p.data_u.dzien<=dzis.dzien)
- em=1;
- if(em)
- {
- fwrite(&p, sizeof(struct pracownik), 1, plik2);
- zwraca+=p.pobory*6;
- }
- else
- {
- fwrite(&p, sizeof(struct pracownik), 1, temp);
- }
- }
- fclose(plik1);
- fclose(plik2);
- fclose(temp);
- remove("kadry.txt");
- rename("temp.txt","kadry.txt");
- return zwraca;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement