Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6. const int n = 52;
  7.  
  8. typedef struct slownik
  9. {
  10. struct slownik *tablica[n];
  11. } USS, *USS_PTR;
  12.  
  13. int do_indeksu(char znaki)
  14. {
  15. if ((znaki <= 'Z') && (znaki >= 'A') || (znaki <= 'z') && (znaki >= 'a'))
  16. {
  17. return toupper(znaki) - 'A';
  18. }
  19. else
  20. {
  21. if (znaki == ' ')
  22. {
  23. return 50;
  24. }
  25. if (znaki == '-')
  26. {
  27. return 51;
  28. }
  29. }
  30. }
  31.  
  32. char z_indeksu(int n)
  33. {
  34. if ((n >= 0) && (n <= ('Z' - 'A')))
  35. {
  36. return toupper((char) n + 'A');
  37. }
  38. else
  39. {
  40. if (n == 50)
  41. {
  42. return ' ';
  43. }
  44. if (n == 51)
  45. {
  46. return '-';
  47. }
  48. }
  49. }
  50.  
  51. void zapisz(char *slowo, USS_PTR p)
  52. {
  53. USS_PTR q;
  54. int pos;
  55. for (int i = 1; i <= strlen(slowo); i++)
  56. {
  57. pos = do_indeksu(slowo[i - 1]);
  58. if (p->tablica[pos] != NULL)
  59. {
  60. p = p->tablica[pos];
  61. }
  62. else
  63. {
  64. q = new USS;
  65. p->tablica[pos] = q;
  66. for (int j = 0; j < n; q->tablica[j++] = NULL)
  67. {
  68. p = q;
  69. }
  70. }
  71. }
  72. p->tablica[n - 1] = p;
  73. }
  74.  
  75. void pisz_slownik(USS_PTR p)
  76. {
  77. for (int i = 0; i < 50; i++)
  78. {
  79. if (p->tablica[i] != NULL)
  80. {
  81. if ((p->tablica[i])->tablica[n - 1] == p->tablica[i])
  82. {
  83. cout << z_indeksu(i) << endl << " ";
  84. }
  85. else
  86. {
  87. cout << z_indeksu(i);
  88. cout << "-";
  89. pisz_slownik(p->tablica[i]);
  90. }
  91. }
  92. }
  93. }
  94.  
  95. void szukaj(char slowo[], USS_PTR p)
  96. {
  97. int test = 1;
  98. int i = 0;
  99. while ((test == 1) && (i < strlen(slowo)))
  100. {
  101. if (p->tablica[do_indeksu(slowo[i])] == NULL)
  102. {
  103. test = 0;
  104. }
  105. else
  106. {
  107. p = p->tablica[do_indeksu(slowo[i++])];
  108. }
  109. if ((i == strlen(slowo)) && (p->tablica[n - 1] == p) && test)
  110. {
  111. cout << "Slowo znalezione!\n";
  112. return;
  113. }
  114. }
  115. cout << "Slowo nie zostalo znalezione!\n";
  116. }
  117.  
  118. int main()
  119. {
  120. int i;
  121. string word;
  122. string word2;
  123.  
  124. USS_PTR p = new USS;
  125.  
  126. string plik_we;
  127. cout << "Podaj nazwe slownika: " << endl;
  128. cin >> plik_we;
  129.  
  130. string plik_wy;
  131. cout << "Podaj nazwe dokumentu do sprawdzenia: " << endl;
  132. cin >> plik_wy;
  133.  
  134. ifstream words;
  135. words.open(plik_we.c_str(), ios::in);
  136. ifstream words2;
  137. words2.open(plik_wy.c_str(), ios::in);
  138.  
  139. for (i = 0; i < n; p->tablica[i++] = NULL);
  140.  
  141. while (getline(words, word))
  142. {
  143. char tresc[50];
  144. int i;
  145. for (i = 0; i <= sizeof(tresc); i++)
  146. {
  147. words.getline( tresc, 255 );
  148. zapisz(tresc, p);
  149. }
  150. }
  151.  
  152. while (getline(words2, word))
  153. {
  154. char tekst;
  155. int i;
  156. for (i = 0; i <= sizeof(tekst); i++)
  157. {
  158. words2.getline( tekst, 255 );
  159. szukaj(tekst, p);
  160. }
  161. }
  162. return 0;
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement