SHARE
TWEET

Untitled

a guest Jan 20th, 2020 71 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <string.h>
  3.  
  4. using namespace std;
  5. const int n = 29;
  6.  
  7. typedef struct slownik
  8. {
  9.     struct slownik *tablica[n];
  10. } USS, *USS_PTR;
  11.  
  12. int do_indeksu(char znaki)
  13. {
  14.     if ((znaki <= 'Z') && (znaki >= 'A') || (znaki <= 'z') && (znaki >= 'a'))
  15.     {
  16.         return toupper(znaki) - 'A';
  17.     }
  18.     else
  19.     {
  20.         if (znaki == ' ')
  21.         {
  22.             return 26;
  23.         }
  24.         if (znaki == '-')
  25.         {
  26.             return 27;
  27.         }
  28.     }
  29. }
  30.  
  31. char z_indeksu(int n)
  32. {
  33.     if ((n >= 0) && (n <= ('Z' - 'A')))
  34.     {
  35.         return toupper((char) n + 'A');
  36.     }
  37.     else
  38.     {
  39.         if (n == 26)
  40.         {
  41.             return ' ';
  42.         }
  43.         if (n == 27)
  44.         {
  45.             return '-';
  46.         }
  47.     }
  48. }
  49.  
  50. void zapisz(char *slowo, USS_PTR p)
  51. {
  52.     USS_PTR q;
  53.     int pos;
  54.     for (int i = 1; i <= strlen(slowo); i++)
  55.     {
  56.         pos = do_indeksu(slowo[i - 1]);
  57.         if (p->tablica[pos] != NULL)
  58.         {
  59.             p = p->tablica[pos];
  60.         }
  61.         else
  62.         {
  63.             q = new USS;
  64.             p->tablica[pos] = q;
  65.             for (int j = 0; j < n; q->tablica[j++] = NULL)
  66.             {
  67.                 p = q;
  68.             }
  69.         }
  70.     }
  71.     p->tablica[n - 1] = p;
  72. }
  73.  
  74. void pisz_slownik(USS_PTR p)
  75. {
  76.     for (int i = 0; i < 26; i++)
  77.     {
  78.         if (p->tablica[i] != NULL)
  79.         {
  80.             if ((p->tablica[i])->tablica[n - 1] == p->tablica[i])
  81.             {
  82.                 cout << z_indeksu(i) << endl << " ";
  83.             }
  84.             else
  85.             {
  86.                 cout << z_indeksu(i);
  87.                 cout << "-";
  88.                 pisz_slownik(p->tablica[i]);
  89.             }
  90.         }
  91.     }
  92. }
  93.  
  94. void szukaj(char slowo[], USS_PTR p)
  95. {
  96.     int test = 1;
  97.     int i = 0;
  98.     while ((test == 1) && (i < strlen(slowo)))
  99.     {
  100.         if (p->tablica[do_indeksu(slowo[i])] == NULL)
  101.         {
  102.             test = 0;
  103.         }
  104.         else
  105.         {
  106.             p = p->tablica[do_indeksu(slowo[i++])];
  107.         }
  108.         if ((i == strlen(slowo)) && (p->tablica[n - 1] == p) && test)
  109.         {
  110.             cout << "Slowo znalezione!\n";
  111.             return;
  112.         }
  113.     }
  114.     cout << "Slowo nie zostalo znalezione!\n";
  115. }
  116.  
  117. int main()
  118. {
  119.     int i;
  120.     char tresc[50];
  121.  
  122.     USS_PTR p = new USS;
  123.  
  124.     for (i = 0; i < n; p->tablica[i++] = NULL);
  125.     for (i = 1; i <= 3; i++)
  126.         {
  127.             cout << "Podaj slowo, ktore trzeba umiescic w slowniku: ";
  128.             cin >> tresc;
  129.             zapisz(tresc, p);
  130.         }
  131.         pisz_slownik(p);
  132.         for (i = 1; i <= 3; i++)
  133.         {
  134.             cout << "Podaj slowo, ktore trzeba wyszukac w slowniku: ";
  135.         }
  136.         cin >> tresc;
  137.         szukaj(tresc, p);
  138.     return 0;
  139. }
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