Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement