Advertisement
andrejsherlock

Sherlock01

Feb 17th, 2020
549
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 19.52 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include <string.h>
  5. #include <ctype.h>
  6.  
  7. typedef struct
  8. {
  9.     char        nazev_polozky[100];
  10.     char        typ_polozky[100];
  11.     char        inventarni_cislo[100];
  12.     char        odpovedna_osoba[100];
  13.     char        datum_kontroly[100];
  14.     char        kontrolujici_osoba[100];
  15.     char        stav_polozky[100];
  16.     long long int           hodnota;
  17. }
  18.         data_typ;
  19.  
  20.                 typedef struct uzel uzel;
  21.  
  22. struct uzel
  23. {
  24.         data_typ* data;
  25.         uzel* naslednik;
  26. };
  27.  
  28. typedef struct
  29. {
  30.         uzel* zaciatok;
  31.         uzel* koniec;
  32. }
  33. spojovy_zoznam;
  34.  
  35. bool fgetLine(FILE* soubor, char* string, int maxDelka)
  36. {
  37.         for (int i = 0; i < maxDelka; i++) {
  38.         int znak = fgetc(soubor);
  39.  
  40.         if (ferror(soubor)) {
  41.             printf("Chyba: nedal sa nam precitat cely riadok \n");
  42.             return 0;
  43.                             }  
  44.  
  45.         if (znak != EOF && znak != '\n')
  46.             string[i] = znak;
  47.         else {
  48.             string[i] = '\0';
  49.             return 1;
  50.              }
  51.                                             }
  52.  
  53.     printf("Chyba: riadok je dlhsi nez maximalna povolena dlzka %d znaku.\n", maxDelka - 1);
  54.     return 0;
  55. }
  56.  
  57. void vypis_data(data_typ* data)
  58. {
  59.     int j = 0;
  60.     while (data->nazev_polozky[j] != '*')
  61.     {
  62.         printf("%c", data->nazev_polozky[j]);
  63.         j++;
  64.     }
  65.     j = 0;
  66.     printf(";");
  67.     while (data->typ_polozky[j] != '*')
  68.     {
  69.         printf("%c", data->typ_polozky[j]);
  70.         j++;
  71.     }
  72.     j = 0;
  73.     printf(";");
  74.     while (data->inventarni_cislo[j] != '*')
  75.     {
  76.         printf("%c", data->inventarni_cislo[j]);
  77.         j++;
  78.     }
  79.     j = 0;
  80.     printf(";");
  81.     while (data->odpovedna_osoba[j] != '*')
  82.     {
  83.         printf("%c", data->odpovedna_osoba[j]);
  84.         j++;
  85.     }
  86.     j = 0;
  87.     printf(";");
  88.     while (data->datum_kontroly[j] != '*')
  89.     {
  90.         printf("%c", data->datum_kontroly[j]);
  91.         j++;
  92.     }
  93.     j = 0;
  94.     printf(";");
  95.     while (data->kontrolujici_osoba[j] != '*')
  96.     {
  97.         printf("%c", data->kontrolujici_osoba[j]);
  98.         j++;
  99.     }
  100.     j = 0;
  101.     printf(";");
  102.     while (data->stav_polozky[j] != '*')
  103.     {
  104.         printf("%c", data->stav_polozky[j]);
  105.         j++;
  106.     }
  107.     printf(";");
  108.     printf("\n");
  109.     j = 0;
  110.    
  111. }
  112.  
  113. uzel* vytvor_prvok(data_typ* data)
  114. {
  115.     uzel* novy = malloc(sizeof(uzel));
  116.     if (novy == NULL) {
  117.         printf("chyba alokace\n");
  118.         return 0;
  119.     }
  120.     novy->data = data;
  121.     novy->naslednik = NULL;
  122.     return novy;
  123. }
  124.  
  125. void vloz_na_zaciatok(spojovy_zoznam* s, data_typ* data)
  126. {
  127.     if (s->zaciatok == NULL) {
  128.         uzel* novy = vytvor_prvok(NULL);
  129.         if (novy == NULL)
  130.         {
  131.             free(data);
  132.             return;
  133.         }
  134.         s->zaciatok = novy;
  135.         s->koniec = novy;
  136.     }
  137.     uzel* novy = vytvor_prvok(data);
  138.     if (novy == NULL)
  139.     {
  140.         free(data);
  141.         return;
  142.     }
  143.     novy->naslednik = s->zaciatok;
  144.     s->zaciatok = novy;
  145. }
  146.  
  147. void vloz_na_koniec(spojovy_zoznam* s, data_typ* data)
  148. {
  149.     if (s->zaciatok == NULL) {
  150.         vloz_na_zaciatok(s, data);
  151.     }
  152.     else {
  153.         uzel* novy = vytvor_prvok(s->koniec->data);
  154.         if (novy == NULL)
  155.             return;
  156.             novy->naslednik = NULL;
  157.             s->koniec->naslednik = novy;
  158.             s->koniec->data = data;
  159.             s->koniec = novy;
  160.     }
  161. }
  162.  
  163. void vypis_zoznam(spojovy_zoznam s)
  164. {
  165.     uzel* aktualni = s.zaciatok;
  166.     while (aktualni != s.koniec) {
  167.         vypis_data(aktualni->data);
  168.         aktualni = aktualni->naslednik;
  169.     }
  170. }
  171.  
  172. void zrus_zoznam(spojovy_zoznam* s)
  173. {
  174.     while (s->zaciatok != NULL)
  175.     {
  176.         uzel* aktualni = s->zaciatok;
  177.         s->zaciatok = aktualni->naslednik;
  178.         free(aktualni->data);
  179.         free(aktualni);
  180.     }
  181.     s->koniec = NULL;
  182. }
  183.  
  184. uzel* najdi_predchodca_najvacsieho(spojovy_zoznam* s, uzel* najvacsi_najdi)
  185. {
  186.     uzel* predchodca_najvacsieho_2;
  187.     uzel* aktualni_2 = s->zaciatok;
  188.     predchodca_najvacsieho_2 = NULL;
  189.     while(aktualni_2->naslednik != s->koniec)
  190.     {
  191.         if(aktualni_2->naslednik == najvacsi_najdi)
  192.         {
  193.             return aktualni_2;
  194.         }
  195.         aktualni_2 = aktualni_2->naslednik;
  196.     }
  197.     return NULL;
  198. }
  199. uzel* najdi_najvacsi(spojovy_zoznam* s, int mnozstvo)
  200. {
  201.     uzel* najvacsi_najdi;
  202.     uzel* aktualni = s->zaciatok;
  203.     for(int i = 0; i < mnozstvo; i++)
  204.     {
  205.         aktualni = aktualni->naslednik;
  206.     }
  207.     najvacsi_najdi = aktualni;
  208.     while(aktualni != s->koniec)
  209.     {
  210.         if(strcmp(aktualni->data->inventarni_cislo, najvacsi_najdi->data->inventarni_cislo) > 0)
  211.         {
  212.             najvacsi_najdi = aktualni;
  213.         }
  214.         aktualni = aktualni->naslednik;
  215.     }
  216.     return najvacsi_najdi;
  217. }
  218.  
  219. void daj_na_zaciatok(spojovy_zoznam* s, int delka_s, uzel* najvacsi_1, uzel* predchodca_najvacsieho_1)
  220. {
  221.     if(najvacsi_1 == s->zaciatok)
  222.     {
  223.         return;
  224.     }
  225.     if(najvacsi_1->naslednik == s->koniec)
  226.     {
  227.         predchodca_najvacsieho_1->naslednik = s->koniec;
  228.         najvacsi_1->naslednik = s->zaciatok;
  229.         s->zaciatok = najvacsi_1;
  230.         return;
  231.     }
  232.     predchodca_najvacsieho_1->naslednik = najvacsi_1->naslednik;
  233.     najvacsi_1->naslednik = s->zaciatok;
  234.     s->zaciatok = najvacsi_1;
  235. }
  236.  
  237. void srovnej(spojovy_zoznam* s, int dlzka_s, spojovy_zoznam d)
  238. {
  239.     int mnozstvi = 0;
  240.     for(int a = 0; a < dlzka_s; a++)
  241.     {
  242.         uzel* najvacsi;
  243.         najvacsi = najdi_najvacsi(s, mnozstvi);
  244.         uzel* predchodca_najvacsieho;
  245.         predchodca_najvacsieho = najdi_predchodca_najvacsieho(s, najvacsi);
  246.         if(predchodca_najvacsieho == NULL)
  247.         {
  248.             continue;
  249.         }
  250.         strc_ho_na_zacatek(s, dlzka_s, najvacsi, predchodca_najvacsieho);
  251.         mnozstvi ++;
  252.     }
  253. }
  254.  
  255. int najdi_pozice_stredniku(const char* radek_, int index)
  256. {
  257.     for(int i = index + 1; i < 1000; i++)
  258.     {
  259.         if(radek_[i] == ';')
  260.         {
  261.             return i;
  262.         }
  263.     }
  264.     printf("Chyba ve strednicich\n");
  265.     return 0;
  266. }
  267.  
  268. void zapis_data_do_souboru(data_typ* data, FILE* soubor)
  269. {
  270.     int j = 0;
  271.     while(data->nazev_polozky[j] != '*')
  272.     {
  273.         fputc(data->nazev_polozky[j], soubor);
  274.         j++;
  275.     }
  276.     while(j < 25)
  277.     {
  278.         fputc(' ', soubor);
  279.         j++;
  280.     }
  281.     fputc(';', soubor);
  282.     j = 0;
  283.     while(data->typ_polozky[j] != '*')
  284.     {
  285.         fputc(data->typ_polozky[j], soubor);
  286.         j++;
  287.     }
  288.     while(j < 25)
  289.     {
  290.         fputc(' ', soubor);
  291.         j++;
  292.     }
  293.     fputc(';', soubor);
  294.     j = 1;
  295.     fputc(' ', soubor);
  296.     while(data->inventarni_cislo[j] != '*')
  297.     {
  298.         fputc(data->inventarni_cislo[j], soubor);
  299.         j++;
  300.     }
  301.     while(j < 25)
  302.     {
  303.         fputc(' ', soubor);
  304.         j++;
  305.     }
  306.     fputc(';', soubor);
  307.     j = 0;
  308.     while(data->odpovedna_osoba[j] != '*')
  309.     {
  310.         fputc(data->odpovedna_osoba[j], soubor);
  311.         j++;
  312.     }
  313.     while(j < 25)
  314.     {
  315.         fputc(' ', soubor);
  316.         j++;
  317.     }
  318.     fputc(';', soubor);
  319.     j = 0;
  320.     while(data->datum_kontroly[j] != '*')
  321.     {
  322.         fputc(data->datum_kontroly[j], soubor);
  323.         j++;
  324.     }
  325.     while(j < 25)
  326.     {
  327.         fputc(' ', soubor);
  328.         j++;
  329.     }
  330.     fputc(';', soubor);
  331.     j = 0;
  332.     while(data->kontrolujici_osoba[j] != '*')
  333.     {
  334.         fputc(data->kontrolujici_osoba[j], soubor);
  335.         j++;
  336.     }
  337.     while(j < 25)
  338.     {
  339.         fputc(' ', soubor);
  340.         j++;
  341.     }
  342.     fputc(';', soubor);
  343.     j = 0;
  344.     while(data->stav_polozky[j] != '*')
  345.     {
  346.         fputc(data->stav_polozky[j], soubor);
  347.         j++;
  348.     }
  349.     while(j < 25)
  350.     {
  351.         fputc(' ', soubor);
  352.         j++;
  353.     }
  354.     fputc(';', soubor);
  355.     j = 0;
  356.    
  357.     fputc('\n', soubor);
  358. }
  359.  
  360. void vypln_text(spojovy_zoznam s, FILE* soubor)
  361. {
  362.     uzel* aktualni = s.zaciatok;
  363.     while(aktualni != s.koniec)
  364.     {
  365.         zapis_data_do_souboru(aktualni->data, soubor);
  366.         aktualni = aktualni->naslednik;
  367.     }
  368. }
  369.  
  370. void vypis_chybne(spojovy_zoznam s)
  371. {
  372.     uzel* aktualni = s.zaciatok;
  373.     while(aktualni != s.koniec)
  374.     {
  375.         char stav[30];
  376.         for(int o = 0; o < 30; o++)
  377.         {
  378.             stav[o] = '\0';
  379.         }
  380.         int z = 0;
  381.         int y = 0;
  382.         while (aktualni->data->stav_polozky[z] != '*')
  383.         {
  384.             if(aktualni->data->stav_polozky[z] != ' ')
  385.             {
  386.                 stav[y] = aktualni->data->stav_polozky[z];
  387.                 y++;
  388.             }
  389.             z++;
  390.         }
  391.         if((strcmp(stav, "OK") != 0 ) && (strcmp(stav, "Ok") != 0 ) && (strcmp(stav, "ok") != 0 ) && (strcmp(stav, "oK") != 0))
  392.         {
  393.             vypis_data(aktualni->data);
  394.         }
  395.         aktualni = aktualni->naslednik;
  396.     }
  397. }
  398.  
  399. int main()
  400. {
  401.     spojovy_zoznam s;
  402.     s.zaciatok = NULL;
  403.     s.koniec = NULL;
  404.    
  405.     FILE* soubor = fopen("vstup.txt", "r");
  406.     if (soubor == NULL)
  407.     {
  408.         printf("chyba otevreni souboru\n");
  409.         return 1;
  410.     }
  411.     int dlzka_zoznamu;
  412.     char zaciatok[1000];
  413.     int zaciatok_true = 0;
  414.     while (!feof(soubor))
  415.     {
  416.         char riadok[1000];
  417.         fgetLine(soubor, riadok, 1000);
  418.        
  419.         if(riadok[0] == '#')
  420.         {
  421.             zaciatok_true = 1;
  422.             int x = 0;
  423.             while(riadok[x] != '\0')
  424.             {
  425.                 zaciatok[x] = riadok[x];
  426.                 zaciatok[x + 1] = '*';
  427.                 x++;
  428.             }
  429.             continue;
  430.         }
  431.        
  432.        
  433.         int startovaci_index = 0;
  434.         int stredniky[6];
  435.         for(int i = 0; i < 6; i++)
  436.         {
  437.             stredniky[i] = najdi_pozice_stredniku(riadok, startovaci_index);
  438.             startovaci_index = stredniky[i];
  439.         }
  440.        
  441.         data_typ* data = malloc(sizeof(data_typ));
  442.         if(data==NULL)
  443.         {
  444.             printf("chyba alokace\n");
  445.             fclose(soubor);
  446.             return 1;
  447.         }
  448.        
  449.        
  450.        
  451.         if(stredniky[5] == 0)
  452.         {
  453.             printf("Chyba, vstupni text je ve spatnem formatu");
  454.             return 1;
  455.         }
  456.        
  457.         int dlzka_riadku = 0;
  458.         int pomocna_pro_zpracovani = 0;
  459.        
  460.         while(riadok[dlzka_riadku] != '\0')
  461.         {
  462.             dlzka_riadku++;
  463.         }
  464.         if(dlzka_riadku == 0)
  465.         {
  466.             free(data);
  467.             continue;
  468.         }
  469.         // zpracovani radku
  470.         char neni_dostupne[21] = {' ', 'I', 'N', 'F', 'O', 'R', 'M', 'A', 'C', 'E', ' ', 'N', 'E', 'N', 'A', 'L', 'E', 'Z', 'E', 'N', 'A'};
  471.         for(int i = 0; i < stredniky[0]; i++)
  472.         {
  473.             data->nazev_polozky[i] = riadok[i];
  474.             if(riadok[i] != ' ')
  475.             {
  476.                 pomocna_pro_zpracovani = i;
  477.             }
  478.         }
  479.         if(pomocna_pro_zpracovani == 0)
  480.         {
  481.             free(data);
  482.             continue;
  483.         }
  484.         data->nazev_polozky[pomocna_pro_zpracovani + 1]= '*';
  485.         pomocna_pro_zpracovani = 0;
  486.        
  487.         for(int i = stredniky[0] + 1; i < stredniky[1]; i++)
  488.         {
  489.             data->typ_polozky[i - 1 - stredniky[0]] = riadok[i];
  490.             if(riadok[i] != ' ')
  491.             {
  492.                 pomocna_pro_zpracovani = i - 1 - stredniky[0];
  493.             }
  494.         }
  495.         if(pomocna_pro_zpracovani == 0)
  496.         {
  497.             for(int j = 0; j < 21; j++)
  498.             {
  499.                 data->typ_polozky[j] = neni_dostupne[j];
  500.                 pomocna_pro_zpracovani = 20;
  501.             }
  502.         }
  503.         data->typ_polozky[pomocna_pro_zpracovani + 1]= '*';
  504.         pomocna_pro_zpracovani = 0;
  505.        
  506.         int misto = 0;
  507.         for(int i = stredniky[1] + 1; i < stredniky[2]; i++)
  508.         {
  509.             data->inventarni_cislo[i - 1 - stredniky[1]] = riadok[i];
  510.             if(riadok[i] != ' ')
  511.             {
  512.                 pomocna_pro_zpracovani = i - 1 - stredniky[1];
  513.                 continue;
  514.             }
  515.             else
  516.             {
  517.                 continue;
  518.             }
  519.         }
  520.         if(pomocna_pro_zpracovani == 0)
  521.         {
  522.             for(int j = 0; j < 21; j++)
  523.             {
  524.                 data->inventarni_cislo[j] = neni_dostupne[j];
  525.                 pomocna_pro_zpracovani = 20;
  526.             }
  527.         }
  528.         data->inventarni_cislo[pomocna_pro_zpracovani + 1]= '*';
  529.         pomocna_pro_zpracovani = 0;
  530.        
  531.         for(int i = stredniky[2] + 1; i < stredniky[3]; i++)
  532.         {
  533.             data->odpovedna_osoba[i - 1 - stredniky[2]] = riadok[i];
  534.             if(riadok[i] != ' ')
  535.             {
  536.                 pomocna_pro_zpracovani = i - 1 - stredniky[2];
  537.             }
  538.         }
  539.         if(pomocna_pro_zpracovani == 0)
  540.         {
  541.             for(int j = 0; j < 21; j++)
  542.             {
  543.                 data->odpovedna_osoba[j] = neni_dostupne[j];
  544.                 pomocna_pro_zpracovani = 20;
  545.             }
  546.         }
  547.         data->odpovedna_osoba[pomocna_pro_zpracovani + 1]= '*';
  548.         pomocna_pro_zpracovani = 0;
  549.        
  550.         int den = 0;
  551.         int mesic = 0;
  552.         int rok = 0;
  553.         int tecky = 0;
  554.         char chyba[14] = {' ', 'C', 'H', 'Y', 'B', 'N', 'E', ' ', ' ', 'D', 'A', 'T', 'U', 'M'};
  555.         char neprobehla[11] = {' ', 'N', 'E', 'P', 'R', 'O', 'B', 'E', 'H', 'L', 'A'};
  556.        
  557.         for(int i = stredniky[3] + 1; i < stredniky[4]; i++)
  558.         {
  559.            
  560.             if(tecky == 0)
  561.             {
  562.                 if(den == 0)
  563.                 {
  564.                     if(riadok[i] == ' '||riadok[i] == '0')
  565.                     {
  566.                         continue;
  567.                     }
  568.                     if(riadok[i] == '1'||riadok[i] == '2'||riadok[i] == '3'||riadok[i] == '4'||riadok[i] == '5'||riadok[i] == '6'||riadok[i] == '7'||riadok[i] == '8'||riadok[i] == '9')
  569.                     {
  570.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  571.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  572.                         den++;
  573.                         continue;
  574.                     }
  575.                     else
  576.                     {
  577.                         for(int j = 0; j < 14; j++)
  578.                         {
  579.                             data->datum_kontroly[j] = chyba[j];
  580.                         }
  581.                         pomocna_pro_zpracovani = 13;
  582.                         break;
  583.                     }
  584.                 }
  585.                 if(den == 1)
  586.                 {
  587.                     if(riadok[i] == ' ')
  588.                     {
  589.                         continue;
  590.                     }
  591.                     if((riadok[i] == '0'||riadok[i] == '1')&&(riadok[i - 1] == '1'||riadok[i - 1] == '2'||riadok[i - 1] == '3'))
  592.                     {
  593.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  594.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  595.                         den++;
  596.                         continue;
  597.                     }
  598.                     if((riadok[i] == '2'||riadok[i] == '3'||riadok[i] == '4'||riadok[i] == '5'||riadok[i] == '6'||riadok[i] == '7'||riadok[i] == '8'||riadok[i] == '9') && riadok[i - 1] == '1'||riadok[i - 1] == '2')
  599.                     {
  600.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  601.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  602.                         den++;
  603.                         continue;
  604.                     }
  605.                     if(riadok[i] == '.')
  606.                     {
  607.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  608.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  609.                         tecky++;
  610.                         continue;
  611.                     }
  612.                     else
  613.                     {
  614.                         for(int j = 0; j < 14; j++)
  615.                         {
  616.                             data->datum_kontroly[j] = chyba[j];
  617.                         }
  618.                         pomocna_pro_zpracovani = 13;
  619.                         break;
  620.                     }
  621.                 }
  622.                 if(den == 2)
  623.                 {
  624.                     if(riadok[i] == ' ')
  625.                     {
  626.                         continue;
  627.                     }
  628.                     if(riadok[i] == '.')
  629.                     {
  630.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  631.                         tecky++;
  632.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  633.                         continue;
  634.                     }
  635.                     else
  636.                     {
  637.                         for(int j = 0; j < 14; j++)
  638.                         {
  639.                             data->datum_kontroly[j] = chyba[j];
  640.                         }
  641.                         pomocna_pro_zpracovani = 13;
  642.                         break;
  643.                     }
  644.                 }
  645.             }
  646.             if(tecky == 1)
  647.             {
  648.                 if(mesic == 0)
  649.                 {
  650.                     if(riadok[i] == ' '||riadok[i] == '0')
  651.                     {
  652.                         continue;
  653.                     }
  654.                     if(riadok[i] == '1'||riadok[i] == '2'||riadok[i] == '3'||riadok[i] == '4'||riadok[i] == '5'||riadok[i] == '6'||riadok[i] == '7'||riadok[i] == '8'||riadok[i] == '9')
  655.                     {
  656.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  657.                         mesic++;
  658.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  659.                         continue;
  660.                     }
  661.                     else
  662.                     {
  663.                         for(int j = 0; j < 14; j++)
  664.                         {
  665.                             data->datum_kontroly[j] = chyba[j];
  666.                         }
  667.                         pomocna_pro_zpracovani = 13;
  668.                         break;
  669.                     }
  670.                 }
  671.                 if(mesic == 1)
  672.                 {
  673.                     if(riadok[i] == ' ')
  674.                     {
  675.                         continue;
  676.                     }
  677.                     if(riadok[i] == '0'||riadok[i] == '1'||riadok[i] == '2')
  678.                     {
  679.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  680.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  681.                         mesic++;
  682.                         continue;
  683.                     }
  684.                     if(riadok[i] == '.')
  685.                     {
  686.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  687.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  688.                         tecky++;
  689.                         continue;
  690.                     }
  691.                     else
  692.                     {
  693.                         for(int j = 0; j < 14; j++)
  694.                         {
  695.                             data->datum_kontroly[j] = chyba[j];
  696.                         }
  697.                         pomocna_pro_zpracovani = 13;
  698.                         break;
  699.                     }
  700.                 }
  701.                 if(mesic == 2)
  702.                 {
  703.                     if(riadok[i] == ' ')
  704.                     {
  705.                         continue;
  706.                     }
  707.                     if(riadok[i] == '.')
  708.                     {
  709.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  710.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  711.                         tecky++;
  712.                         continue;
  713.                     }
  714.                     else
  715.                     {
  716.                         for(int j = 0; j < 14; j++)
  717.                         {
  718.                             data->datum_kontroly[j] = chyba[j];
  719.                         }
  720.                         pomocna_pro_zpracovani = 13;
  721.                         break;
  722.                     }
  723.                 }
  724.             }
  725.             if(tecky == 2)
  726.             {
  727.                 if(rok == 0)
  728.                 {
  729.                     if(riadok[i] == ' ')
  730.                     {
  731.                         continue;
  732.                     }
  733.                     if(riadok[i] == '1'||riadok[i] == '2')
  734.                     {
  735.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  736.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  737.                         rok++;
  738.                         continue;
  739.                     }  
  740.                     else
  741.                     {
  742.                         for(int j = 0; j < 14; j++)
  743.                         {
  744.                             data->datum_kontroly[j] = chyba[j];
  745.                         }
  746.                         pomocna_pro_zpracovani = 13;
  747.                         break;
  748.                     }
  749.                 }
  750.                 if(rok == 1)
  751.                 {
  752.                     if((riadok[i] == '9' && riadok[i - 1] == '1')||(riadok[i] == '0' && riadok[i - 1] == '2'))
  753.                     {
  754.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  755.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  756.                         rok++;
  757.                         continue;
  758.                     }
  759.                     else
  760.                     {
  761.                         for(int j = 0; j < 14; j++)
  762.                         {
  763.                             data->datum_kontroly[j] = chyba[j];
  764.                         }
  765.                         pomocna_pro_zpracovani = 13;
  766.                         break;
  767.                     }
  768.                 }
  769.                 if(rok == 2)
  770.                 {
  771.                     if((riadok[i] == '0'||riadok[i] == '1'||riadok[i] == '2'||riadok[i] == '3'||riadok[i] == '4'||riadok[i] == '5'||riadok[i] == '6'||riadok[i] == '7'||riadok[i] == '8'||riadok[i] == '9') && riadok[i - 2] == '1')
  772.                     {
  773.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  774.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  775.                         rok++;
  776.                         continue;
  777.                     }
  778.                     if((riadok[i] == '0'||riadok[i] == '1')&&(riadok[i - 2] == '2'))
  779.                     {
  780.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  781.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  782.                         rok++;
  783.                         continue;
  784.                     }
  785.                     else
  786.                     {
  787.                         for(int j = 0; j < 14; j++)
  788.                         {
  789.                             data->datum_kontroly[j] = chyba[j];
  790.                         }
  791.                         pomocna_pro_zpracovani = 13;
  792.                         break;
  793.                     }
  794.                 }
  795.                 if(rok == 3)
  796.                 {
  797.                     if((riadok[i] == '0'||riadok[i] == '1'||riadok[i] == '2'||riadok[i] == '3'||riadok[i] == '4'||riadok[i] == '5'||riadok[i] == '6'||riadok[i] == '7'||riadok[i] == '8'||riadok[i] == '9')&& (riadok[i - 3] == '1'||riadok[i - 1] == '1'||riadok[i - 1] == '0'))
  798.                     {
  799.                         data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  800.                         pomocna_pro_zpracovani = i - 1 - stredniky[3];
  801.                         rok++;
  802.                         continue;
  803.                     }
  804.                     else
  805.                     {
  806.                         for(int j = 0; j < 14; j++)
  807.                         {
  808.                             data->datum_kontroly[j] = chyba[j];
  809.                         }
  810.                         pomocna_pro_zpracovani = 13;
  811.                         break;
  812.                     }
  813.                 }
  814.                 if(riadok[i] == ' ')
  815.                 {
  816.                     continue;
  817.                 }
  818.                 if(riadok[i] == '0'||riadok[i] == '1'||riadok[i] == '2'||riadok[i] == '3'||riadok[i] == '4'||riadok[i] == '5'||riadok[i] == '6'||riadok[i] == '7'||riadok[i] == '8'||riadok[i] == '9')
  819.                 {
  820.                     data->datum_kontroly[i - 1 - stredniky[3]] = riadok[i];
  821.                     pomocna_pro_zpracovani = i - 1 - stredniky[3];
  822.                     rok++;
  823.                     continue;
  824.                 }  
  825.                
  826.             }
  827.         }
  828.         if(rok > 4)
  829.         {
  830.             for(int j = 0; j < 14; j++)
  831.             {
  832.                 data->datum_kontroly[j] = chyba[j];
  833.                 pomocna_pro_zpracovani = 13;
  834.             }
  835.         }
  836.         if(pomocna_pro_zpracovani == 0)
  837.         {
  838.             for(int j = 0; j < 11; j++)
  839.             {
  840.                 data->datum_kontroly[j] = neprobehla[j];
  841.                 pomocna_pro_zpracovani = 10;
  842.             }
  843.         }
  844.         data->datum_kontroly[pomocna_pro_zpracovani + 1]= '*';
  845.         pomocna_pro_zpracovani = 0;
  846.        
  847.         for(int i = stredniky[4] + 1; i < stredniky[5]; i++)
  848.         {
  849.             data->kontrolujici_osoba[i - 1 - stredniky[4]] = riadok[i];
  850.            
  851.             if(riadok[i] != ' ')
  852.             {
  853.                 pomocna_pro_zpracovani = i - 1 - stredniky[4];
  854.             }
  855.         }
  856.         if(pomocna_pro_zpracovani == 0)
  857.         {
  858.             for(int j = 0; j < 21; j++)
  859.             {
  860.                 data->kontrolujici_osoba[j] = neni_dostupne[j];
  861.                 pomocna_pro_zpracovani = 20;
  862.             }
  863.         }
  864.         data->kontrolujici_osoba[pomocna_pro_zpracovani + 1]= '*';
  865.         pomocna_pro_zpracovani = 0;
  866.        
  867.         for(int i = stredniky[5] + 1; i <= dlzka_riadku; i++)
  868.         {
  869.             data->stav_polozky[i - 1 - stredniky[5]] = riadok[i];
  870.             if(riadok[i] != ' ' && riadok[i] != '\0' && riadok[i] != '\n')
  871.             {
  872.                 pomocna_pro_zpracovani = i - 1 - stredniky[5];
  873.             }
  874.         }
  875.         if(pomocna_pro_zpracovani == 0)
  876.         {
  877.             for(int j = 0; j < 21; j++)
  878.             {
  879.                 data->stav_polozky[j] = neni_dostupne[j];
  880.                 pomocna_pro_zpracovani = 20;
  881.             }
  882.         }
  883.         data->stav_polozky[pomocna_pro_zpracovani + 1]= '*';
  884.         // vlozit data do zeznamu
  885.         vloz_na_zaciatok(&s, data);
  886.         dlzka_zoznamu ++;
  887.     }
  888.  
  889.     srovnej(&s, dlzka_zoznamu, s);
  890.     vypis_chybne(s);
  891.     fclose(soubor);
  892.    
  893.    
  894.     FILE* soubor_2 = fopen("vystup.txt", "w");
  895.     if (soubor_2 == NULL)
  896.     {
  897.         printf("chyba otevreni souboru\n");
  898.         return 1;
  899.     }
  900.     int z = 0;
  901.     if(zaciatok_true == 1)
  902.     {
  903.         while (zaciatok[z] != '*')
  904.         {
  905.             fputc(zaciatok[z], soubor_2);
  906.             z++;
  907.         }
  908.     }
  909.     fputc('\n', soubor_2);
  910.    
  911.     vypln_textak(s, soubor_2);
  912.    
  913.    
  914.  
  915.     fclose(soubor_2);
  916.     zrus_zoznam(&s);
  917.     return 0;
  918. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement