Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // projekt2.c -- Denis Štrbák, 23.4.2019 13:28
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- typedef struct clovek {
- char meno[30];
- char priezvisko[30];
- char rodne_cislo[10];
- double hruba_mzda;
- char pohlavie[5];
- int pocet_rokov;
- struct clovek *dalsi;
- } CLOVEK;
- void *nacitaj(CLOVEK **zaznamy) {
- CLOVEK *zaznamy_akt;
- char meno[30];
- char priezvisko[30];
- char rodne_cislo[100];
- double hruba_mzda;
- int poc = 1;
- FILE *p_file;
- p_file = fopen("zamestnanci.txt", "r");
- if (p_file == NULL) {
- printf("Zaznamy neboli nacitane\n");
- return NULL;
- }
- (*zaznamy) = (CLOVEK*)malloc(sizeof(CLOVEK));
- zaznamy_akt = *zaznamy;
- while (fscanf(p_file, "%s %s %s %lf", meno, priezvisko, rodne_cislo, &hruba_mzda) != EOF) {
- if (poc != 1) {
- zaznamy_akt->dalsi = (CLOVEK*)malloc(sizeof(CLOVEK));
- zaznamy_akt = zaznamy_akt->dalsi;
- }
- strcpy(zaznamy_akt->meno, meno);
- strcpy(zaznamy_akt->priezvisko, priezvisko);
- strcpy(zaznamy_akt->rodne_cislo, rodne_cislo);
- zaznamy_akt->hruba_mzda = hruba_mzda;
- poc++;
- }
- zaznamy_akt->dalsi = NULL;
- if (p_file != NULL)
- printf("Nacitalo sa %d zaznamov\n", poc - 1);
- fclose(p_file);
- }
- void vypis(CLOVEK *zaznamy) {
- int dvojcislie, pocitadlo = 1;
- char prem, *nic;
- long long int rod;
- if (zaznamy == NULL)
- printf("Zaznamy neboli nacitane");
- else {
- while (zaznamy != NULL) {
- if (zaznamy->rodne_cislo[2] == '5' || zaznamy->rodne_cislo[2] == '6')
- strcpy(zaznamy->pohlavie, "zena");
- else
- strcpy(zaznamy->pohlavie, "muz");
- if (zaznamy->rodne_cislo[2] == '5')
- prem = '0';
- else if (zaznamy->rodne_cislo[2] == '6')
- prem = '1';
- else
- prem = zaznamy->rodne_cislo[2];
- rod = strtoll(zaznamy->rodne_cislo, &nic, 10);
- dvojcislie = rod / 100000000;
- if (dvojcislie >= 20)
- dvojcislie += 1900;
- else
- dvojcislie += 2000;
- 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);
- zaznamy = zaznamy->dalsi;
- }
- }
- }
- void pridaj(CLOVEK **zaznamy)
- {
- int p, i;
- CLOVEK *p_novy, *pom = NULL, *pomoc1;
- if (*zaznamy == NULL)
- printf("Zaznamy neboli nacitane");
- else {
- scanf("%d", &p);
- p_novy = (CLOVEK*)malloc(sizeof(CLOVEK));
- scanf("%s", p_novy->meno);
- scanf("%s", p_novy->priezvisko);
- scanf("%s", p_novy->rodne_cislo);
- scanf("%lf", &p_novy->hruba_mzda);
- p_novy->dalsi = NULL;
- if (*zaznamy != NULL) {
- pom = (*zaznamy);
- for (i = 1; i <= (p - 2); i++) {
- if ((pom->dalsi) != NULL)
- pom = pom->dalsi;
- else
- break;
- }
- if ((i >= (p - 2) && (p != 1))) {
- pomoc1 = pom->dalsi;
- pom->dalsi = p_novy;
- p_novy->dalsi = pomoc1;
- }
- else if (p == 1) {
- pomoc1 = (*zaznamy);
- (*zaznamy) = p_novy;
- (*zaznamy)->dalsi = pomoc1;
- }
- else if (i < p) {
- p_novy->dalsi = NULL;
- pom->dalsi = p_novy;
- }
- }
- else if (*zaznamy == NULL)
- (*zaznamy) = p_novy;
- }
- }
- int overRC(CLOVEK *zaznamy) {
- long long int rod;
- char *nic;
- if (zaznamy == NULL)
- printf("Zaznamy neboli nacitane");
- else {
- rod = strtoll(zaznamy->rodne_cislo, &nic, 10);
- }
- }
- int deduplikuj(CLOVEK *zaznamy) {
- if (zaznamy == NULL)
- printf("Zaznamy neboli nacitane");
- else {
- printf("AHOOOJ");
- }
- }
- int aktualizuj(CLOVEK *zaznamy) {
- CLOVEK *p_aktualny = zaznamy;
- int v, datum_narodenia = 0;
- double p;
- long long int rod;
- char *nic;
- time_t rawtime;
- struct tm * timeinfo;
- time(&rawtime);
- timeinfo = localtime(&rawtime);
- printf("[%d %d %d]", timeinfo->tm_mday, timeinfo->tm_mon + 1, timeinfo->tm_year + 1900);
- if (zaznamy == NULL)
- printf("Zaznamy neboli nacitane");
- else {
- scanf("%d", &v);
- scanf("%lf", &p);
- if (p > 0 && p <= 100) {
- // if (v > zaznamy->pocet_rokov) {
- while (p_aktualny != NULL) {
- datum_narodenia = p_aktualny->rodne_cislo[4];
- // datum_narodenia = datum_narodenia * 10 +(int)strtod(p_aktualny->rodne_cislo[5], NULL);
- // if (timeinfo->tm_mday > datum_narodenia)
- printf("%c\n", p_aktualny->rodne_cislo[4]);
- p_aktualny = p_aktualny->dalsi;
- datum_narodenia = 0;
- }
- // }
- }
- else
- printf("Zle zadana hodnota p");
- }
- }
- int main() {
- char time_str;
- char prikaz[15];
- int p;
- CLOVEK *zaznamy_first = NULL;
- CLOVEK *zac = zaznamy_first;
- while ((scanf("%s", &prikaz) > 0) && (!strcmp(prikaz, "koniec") == 0)) {
- if ((!strcmp(prikaz, "nacitaj") == 1)) {
- nacitaj(&zaznamy_first);
- }
- else if ((!strcmp(prikaz, "vypis") == 1)) {
- vypis(zaznamy_first);
- }
- else if ((!strcmp(prikaz, "pridaj") == 1)) {
- pridaj(&zaznamy_first);
- }
- else if ((!strcmp(prikaz, "overRC") == 1)) {
- overRC(zaznamy_first);
- }
- else if ((!strcmp(prikaz, "deduplikuj") == 1)) {
- deduplikuj(zaznamy_first);
- }
- else if ((!strcmp(prikaz, "aktualizuj") == 1)) {
- aktualizuj(zaznamy_first);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement