Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.06 KB | None | 0 0
  1. // projekt2.c -- Denis Štrbák, 23.4.2019 13:28
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <time.h>
  7.  
  8. typedef struct clovek {
  9. char meno[30];
  10. char priezvisko[30];
  11. char rodne_cislo[10];
  12. double hruba_mzda;
  13. char pohlavie[5];
  14. int pocet_rokov;
  15. struct clovek *dalsi;
  16. } CLOVEK;
  17.  
  18. void *nacitaj(CLOVEK **zaznamy) {
  19.  
  20. CLOVEK *zaznamy_akt;
  21. char meno[30];
  22. char priezvisko[30];
  23. char rodne_cislo[100];
  24. double hruba_mzda;
  25. int poc = 1;
  26.  
  27. FILE *p_file;
  28. p_file = fopen("zamestnanci.txt", "r");
  29.  
  30. if (p_file == NULL) {
  31. printf("Zaznamy neboli nacitane\n");
  32. return NULL;
  33. }
  34.  
  35. (*zaznamy) = (CLOVEK*)malloc(sizeof(CLOVEK));
  36. zaznamy_akt = *zaznamy;
  37. while (fscanf(p_file, "%s %s %s %lf", meno, priezvisko, rodne_cislo, &hruba_mzda) != EOF) {
  38. if (poc != 1) {
  39. zaznamy_akt->dalsi = (CLOVEK*)malloc(sizeof(CLOVEK));
  40. zaznamy_akt = zaznamy_akt->dalsi;
  41. }
  42. strcpy(zaznamy_akt->meno, meno);
  43. strcpy(zaznamy_akt->priezvisko, priezvisko);
  44. strcpy(zaznamy_akt->rodne_cislo, rodne_cislo);
  45. zaznamy_akt->hruba_mzda = hruba_mzda;
  46. poc++;
  47. }
  48. zaznamy_akt->dalsi = NULL;
  49.  
  50. if (p_file != NULL)
  51. printf("Nacitalo sa %d zaznamov\n", poc - 1);
  52.  
  53. fclose(p_file);
  54. }
  55.  
  56. void vypis(CLOVEK *zaznamy) {
  57.  
  58. int dvojcislie, pocitadlo = 1;
  59. char prem, *nic;
  60. long long int rod;
  61.  
  62. if (zaznamy == NULL)
  63. printf("Zaznamy neboli nacitane");
  64. else {
  65. while (zaznamy != NULL) {
  66. if (zaznamy->rodne_cislo[2] == '5' || zaznamy->rodne_cislo[2] == '6')
  67. strcpy(zaznamy->pohlavie, "zena");
  68. else
  69. strcpy(zaznamy->pohlavie, "muz");
  70.  
  71. if (zaznamy->rodne_cislo[2] == '5')
  72. prem = '0';
  73. else if (zaznamy->rodne_cislo[2] == '6')
  74. prem = '1';
  75. else
  76. prem = zaznamy->rodne_cislo[2];
  77.  
  78. rod = strtoll(zaznamy->rodne_cislo, &nic, 10);
  79.  
  80. dvojcislie = rod / 100000000;
  81. if (dvojcislie >= 20)
  82. dvojcislie += 1900;
  83. else
  84. dvojcislie += 2000;
  85.  
  86. printf("%d. %s %s %s %c%c.%c%c.%d %.2lf\n", pocitadlo++, zaznamy->meno, zaznamy->priezvisko, zaznamy->pohlavie, zaznamy->rodne_cislo[4], zaznamy->rodne_cislo[5], prem, zaznamy->rodne_cislo[3], dvojcislie, zaznamy->hruba_mzda);
  87. zaznamy = zaznamy->dalsi;
  88.  
  89. }
  90. }
  91. }
  92.  
  93. void pridaj(CLOVEK **zaznamy)
  94. {
  95. int p, i;
  96. CLOVEK *p_novy, *pom = NULL, *pomoc1;
  97.  
  98. if (*zaznamy == NULL)
  99. printf("Zaznamy neboli nacitane");
  100. else {
  101. scanf("%d", &p);
  102. p_novy = (CLOVEK*)malloc(sizeof(CLOVEK));
  103.  
  104. scanf("%s", p_novy->meno);
  105. scanf("%s", p_novy->priezvisko);
  106. scanf("%s", p_novy->rodne_cislo);
  107. scanf("%lf", &p_novy->hruba_mzda);
  108. p_novy->dalsi = NULL;
  109. if (*zaznamy != NULL) {
  110. pom = (*zaznamy);
  111. for (i = 1; i <= (p - 2); i++) {
  112. if ((pom->dalsi) != NULL)
  113. pom = pom->dalsi;
  114. else
  115. break;
  116. }
  117. if ((i >= (p - 2) && (p != 1))) {
  118. pomoc1 = pom->dalsi;
  119. pom->dalsi = p_novy;
  120. p_novy->dalsi = pomoc1;
  121. }
  122. else if (p == 1) {
  123. pomoc1 = (*zaznamy);
  124. (*zaznamy) = p_novy;
  125. (*zaznamy)->dalsi = pomoc1;
  126. }
  127. else if (i < p) {
  128. p_novy->dalsi = NULL;
  129. pom->dalsi = p_novy;
  130. }
  131. }
  132. else if (*zaznamy == NULL)
  133. (*zaznamy) = p_novy;
  134. }
  135.  
  136. }
  137.  
  138. int overRC(CLOVEK *zaznamy) {
  139.  
  140. long long int rod;
  141. char *nic;
  142.  
  143. if (zaznamy == NULL)
  144. printf("Zaznamy neboli nacitane");
  145. else {
  146. rod = strtoll(zaznamy->rodne_cislo, &nic, 10);
  147.  
  148. }
  149. }
  150.  
  151. int deduplikuj(CLOVEK *zaznamy) {
  152.  
  153.  
  154. if (zaznamy == NULL)
  155. printf("Zaznamy neboli nacitane");
  156. else {
  157. printf("AHOOOJ");
  158. }
  159. }
  160.  
  161. int aktualizuj(CLOVEK *zaznamy) {
  162.  
  163. CLOVEK *p_aktualny = zaznamy;
  164. int v, datum_narodenia = 0;
  165. double p;
  166. long long int rod;
  167. char *nic;
  168.  
  169. time_t rawtime;
  170. struct tm * timeinfo;
  171.  
  172. time(&rawtime);
  173. timeinfo = localtime(&rawtime);
  174.  
  175. printf("[%d %d %d]", timeinfo->tm_mday, timeinfo->tm_mon + 1, timeinfo->tm_year + 1900);
  176.  
  177. if (zaznamy == NULL)
  178. printf("Zaznamy neboli nacitane");
  179. else {
  180. scanf("%d", &v);
  181. scanf("%lf", &p);
  182. if (p > 0 && p <= 100) {
  183. // if (v > zaznamy->pocet_rokov) {
  184. while (p_aktualny != NULL) {
  185.  
  186. datum_narodenia = p_aktualny->rodne_cislo[4];
  187. // datum_narodenia = datum_narodenia * 10 +(int)strtod(p_aktualny->rodne_cislo[5], NULL);
  188.  
  189. // if (timeinfo->tm_mday > datum_narodenia)
  190. printf("%c\n", p_aktualny->rodne_cislo[4]);
  191.  
  192. p_aktualny = p_aktualny->dalsi;
  193. datum_narodenia = 0;
  194. }
  195. // }
  196. }
  197. else
  198. printf("Zle zadana hodnota p");
  199. }
  200. }
  201.  
  202.  
  203. int main() {
  204.  
  205. char time_str;
  206. char prikaz[15];
  207. int p;
  208. CLOVEK *zaznamy_first = NULL;
  209. CLOVEK *zac = zaznamy_first;
  210.  
  211. while ((scanf("%s", &prikaz) > 0) && (!strcmp(prikaz, "koniec") == 0)) {
  212. if ((!strcmp(prikaz, "nacitaj") == 1)) {
  213. nacitaj(&zaznamy_first);
  214. }
  215. else if ((!strcmp(prikaz, "vypis") == 1)) {
  216. vypis(zaznamy_first);
  217. }
  218. else if ((!strcmp(prikaz, "pridaj") == 1)) {
  219. pridaj(&zaznamy_first);
  220. }
  221. else if ((!strcmp(prikaz, "overRC") == 1)) {
  222. overRC(zaznamy_first);
  223. }
  224. else if ((!strcmp(prikaz, "deduplikuj") == 1)) {
  225. deduplikuj(zaznamy_first);
  226. }
  227. else if ((!strcmp(prikaz, "aktualizuj") == 1)) {
  228. aktualizuj(zaznamy_first);
  229. }
  230. }
  231.  
  232. return 0;
  233. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement