Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct data {
  5. int dzien;
  6. int miesiac;
  7. int rok;
  8. };
  9.  
  10. struct pracownik {
  11. char nazwisko[30];
  12. struct data data_u;
  13. struct data data_z;
  14. char plec; // k lub m
  15. double pobory;
  16. };
  17.  
  18. double funkcja();
  19. void dopisz_p();
  20.  
  21. main()
  22. {
  23. dopisz_p();
  24. printf("Razem: %lf", funkcja());
  25. }
  26.  
  27. void dopisz_p()
  28. {
  29. struct pracownik p;
  30. FILE* plik= fopen("kadry.txt","a");
  31.  
  32.  
  33. printf("Podaj nazwisko:\n");
  34. fflush(stdin);
  35. scanf("%s", p.nazwisko);
  36. // gets(p.nazwisko);
  37.  
  38. printf("Podaj rok urodzenia:\n");
  39. fflush(stdin);
  40. scanf("%d",&p.data_u.rok);
  41.  
  42. do
  43. {
  44. printf("Podaj miesiac urodzenia:\n");
  45. fflush(stdin);
  46. scanf("%d",&p.data_u.miesiac);
  47. }while (!(p.data_u.miesiac>0 && p.data_u.miesiac<12));
  48.  
  49. do
  50. {
  51. printf("Podaj dzien urodzenia:\n");
  52. fflush(stdin);
  53. scanf("%d",&p.data_u.dzien);
  54. }while (!(p.data_u.dzien>0 && p.data_u.dzien<31));//miesiace/lata przestepne
  55.  
  56. printf("Podaj rok zatrudnienia:\n");
  57. fflush(stdin);
  58. scanf("%d",&p.data_z.rok);
  59.  
  60. do
  61. {
  62. printf("Podaj miesiac zatrudnienia:\n");
  63. fflush(stdin);
  64. scanf("%d",&p.data_z.miesiac);
  65. }while (!(p.data_z.miesiac>0 && p.data_z.miesiac<12));
  66.  
  67. do
  68. {
  69. printf("Podaj dzien zatrudnienia:\n");
  70. fflush(stdin);
  71. scanf("%d",&p.data_z.dzien);
  72. }while (!(p.data_z.dzien>0 && p.data_z.dzien<31));//miesiace/lata przestepne
  73.  
  74. do
  75. {
  76. printf("Podaj plec (k/m):\n");
  77. fflush(stdin);
  78. scanf("%c",&p.plec);
  79. } while(p.plec!='k'&& p.plec!='m');
  80.  
  81. do
  82. {
  83. printf("Podaj pobory:\n");
  84. fflush(stdin);
  85. scanf("%lf",&p.pobory);
  86. } while(p.pobory <= 0);
  87.  
  88. fwrite(&p, sizeof(struct pracownik),1,plik);
  89. fclose(plik);
  90. }
  91. double funkcja()
  92. {
  93. struct pracownik p;
  94. FILE *plik1=fopen("kadry.txt","r");
  95. FILE *plik2=fopen("emeryci.txt","w");
  96. FILE *temp=fopen("temp.txt","w");
  97. double zwraca=0;
  98. int pom, em=0;
  99. struct data dzis={16,1,2018};
  100. while(fread(&p, sizeof(struct pracownik), 1, plik1))
  101. {
  102. em=0;
  103. if(p.plec=='k')
  104. pom=60;
  105. else pom=65;
  106.  
  107. if(p.data_u.rok+pom<dzis.rok)
  108. em=1;
  109. else if(p.data_u.rok+pom==dzis.rok && p.data_u.miesiac<dzis.miesiac)
  110. em=1;
  111. else if(p.data_u.rok+pom==dzis.rok && p.data_u.miesiac==dzis.miesiac && p.data_u.dzien<=dzis.dzien)
  112. em=1;
  113.  
  114. if(em)
  115. {
  116. fwrite(&p, sizeof(struct pracownik), 1, plik2);
  117. zwraca+=p.pobory*6;
  118. }
  119. else
  120. {
  121. fwrite(&p, sizeof(struct pracownik), 1, temp);
  122. }
  123. }
  124. fclose(plik1);
  125. fclose(plik2);
  126. fclose(temp);
  127. remove("kadry.txt");
  128. rename("temp.txt","kadry.txt");
  129. return zwraca;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement