SHARE
TWEET

Untitled

a guest Apr 23rd, 2019 82 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top