Prílohy:1

Odstránenie diakritiky v C, histogram početnosti znakov

Vstupom je textový súbor s diakritikou. Výstupom je súbor s pôvodným textom bez diakritiky a histogramom početnosti výskytov ascii znakov v súbore.

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
    int c;
    char *sk = "áäčďéěíľĺňóôŕřšťúůýžÁÄČĎÉĚÍĽĹŇÓÔŔŘŠŤÚŮÝŽ";
    char *en = "aacdeeillnoorrstuuyzAACDEEILLNOORRSTUUYZ";

    const int znakov=128;
    int sDia[znakov], bezDia[znakov],i;
    for (i=0; i<znakov; i++) sDia[i]=bezDia[i]=0;

    FILE *f = fopen("vstup.txt", "r");
    FILE *w = fopen("vystup.txt","w");

    fputs("Povodny obsah bez diakritiky:\n",w);
    fputs("=============================\n",w);

    char *pos;
    while ((c=fgetc(f))!=EOF)
    {
        pos = strchr (sk, c);
        //pismeno s diakritikou
        if (pos!=NULL)
        {
            sDia[en[pos-sk]]++;
            fputc(en[pos-sk],w);
        }
        //pismeno bez diakritiky
        else
        {
            if (isalpha(c)) bezDia[c]++;
            fputc(c,w);
        }
    }


    fclose(f);

    fputs("\n\n\nPocetnost znakov:\n",w);
    fputs("=============================\n\n",w);
    fputs("          sDia  bezDia   spolu\n",w);
    for (i=0; i<znakov; i++)
        if (sDia[i]>0 || bezDia[i]>0)
            fprintf(w,"%4c:\t%4d\t%4d\t%4d\n",i,sDia[i],bezDia[i],sDia[i]+bezDia[i]);

    fputs("\nOstatne pismena ascii sa v subore nenachadzaju.\n",w);
    fclose(w);

    return 0;
}

Ukážka tabuľky početnosti:

Pocetnost znakov:
=============================

          sDia  bezDia   spolu
   C:	   0	   1	   1
   D:	   0	   1	   1
   E:	   0	   5	   5
   J:	   0	   1	   1
   M:	   0	   2	   2
   N:	   0	  10	  10
   O:	   0	   2	   2
   S:	   0	   3	   3
   T:	   0	   5	   5
   U:	   0	   3	   3
   V:	   0	   4	   4
   a:	  19	  89	 108
   b:	   0	  14	  14
   c:	   5	  32	  37
   d:	   0	  39	  39
   e:	  36	 108	 144
   f:	   0	   7	   7
   g:	   0	   5	   5
   h:	   0	  23	  23
   i:	  39	  67	 106
   j:	   0	  33	  33
   k:	   0	  50	  50
   l:	   0	  35	  35
   m:	   0	  35	  35
   n:	   1	  86	  87
   o:	   0	  95	  95
   p:	   0	  30	  30
   r:	  13	  44	  57
   s:	  16	  46	  62
   t:	   0	  82	  82
   u:	   7	  34	  41
   v:	   0	  42	  42
   w:	   0	   2	   2
   x:	   0	   4	   4
   y:	   7	  32	  39
   z:	  10	  38	  48

Ostatne pismena ascii sa v subore nenachadzaju.