Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.74 KB | None | 0 0
  1. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\HEADER
  2. #pragma once
  3. #include <iostream>
  4. #include <string.h>
  5. using namespace std;
  6. class Element
  7. {
  8. int data;
  9. char symb;
  10. Element * straight;
  11. Element * previous;
  12. Element * down;
  13. public:
  14. Element(int a, char b) { symb = b; data = a; straight = 0; down = 0; }
  15. friend class List;
  16. friend ostream & operator << (ostream&s, List &a);
  17. };
  18. class List
  19. {
  20. Element *Ver;
  21. public:
  22. List() { Ver = 0; }
  23. void push(char**,int);
  24. void Dekor(char*,List,char*,int len);
  25. void Kodir(List a, char * mas, char *,int&);
  26. friend ostream & operator << (ostream&s, List &a);
  27. };
  28. char ** SORT(char* str, int &m);
  29.  
  30. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\MAS
  31. #include "Header.h"
  32.  
  33. char ** SORT(char* str, int &m)
  34. {
  35. int i, n = strlen(str);
  36. char ** mas = new char *[2];
  37. for (int i = 0; i < 2; i++)
  38. mas[i] = new char[n];
  39. for (int i = 0; i < n; i++)
  40. mas[1][i] = 49;
  41. for (; *str != 0; str++)
  42. {
  43. for (i = 0; i < n && mas[0][i] != *str; i++);
  44. if (i == n)
  45. {
  46. mas[0][m] = *str;
  47. m++;
  48. }
  49. else
  50. mas[1][i]++;
  51. }
  52.  
  53. int t = 0;
  54. for (int i = 0; i < m; i++)
  55. {
  56. int save, max = 0;
  57. t = i;
  58. for (; t < m; t++)
  59. {
  60. if (mas[1][t] > max)
  61. {
  62. max = mas[1][t];
  63. save = t;
  64. }
  65. }
  66. max = mas[0][i]; mas[0][i] = mas[0][save]; mas[0][save] = max;
  67. max = mas[1][i]; mas[1][i] = mas[1][save]; mas[1][save] = max;
  68. }
  69.  
  70. mas[0][m] = '\0';
  71. mas[1][m] = '\0';
  72. return mas;
  73. }
  74.  
  75. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\SPISOK
  76. #include "Header.h"
  77. void List::push(char** b, int m)
  78. {
  79. Element *pver;
  80. Element *pdown;
  81. int a = b[1][m - 1] - 48;
  82. for (int i = m - 1; i >= 0; i--)
  83. {
  84. if (Ver != 0)
  85. {
  86. a += b[1][i] - 48;
  87. pver = new Element(1, a);
  88. pdown = new Element(0, b[0][i]);
  89. Ver->previous = pver;
  90. pver->straight = Ver;
  91. pdown->previous = pver;
  92. pver->down = pdown;
  93. Ver = pver;
  94. }
  95. else
  96. {
  97. pver = new Element(1, b[0][i]);
  98. Ver = pver;
  99. Ver->straight = 0;
  100. Ver->down = 0;
  101. }
  102. }
  103. }
  104.  
  105. void List::Kodir(List a, char * mas, char *mas1, int &t)
  106. {
  107. Element * ptr = a.Ver;
  108. int data1;
  109. t = 0;
  110. for (int i = 0; i < strlen(mas1); i++)
  111. {
  112. ptr = a.Ver;
  113. while (ptr->straight != 0)
  114. {
  115. if (ptr->down->symb != mas1[i] && ptr->straight->symb != mas1[i])
  116. ptr = ptr->straight;
  117. else
  118. {
  119. if (ptr->down->symb == mas1[i])
  120. data1 = ptr->down->data;
  121. else
  122. data1 = ptr->straight->data;
  123.  
  124. ptr = ptr->down;
  125. while (ptr->previous->previous != 0)
  126. {
  127. mas[t] = ptr->previous->data + 48;
  128. t++;
  129. ptr = ptr->previous;
  130. }
  131. mas[t] = data1 + 48;
  132. t++;
  133. break;
  134. }
  135. }
  136. }
  137. }
  138.  
  139. void List::Dekor(char* mas, List a, char*str, int len)
  140. {
  141. Element*ptr = a.Ver;
  142. int t = 0;
  143. for (int i = 0; i < len; i++)
  144. {
  145. if (0 == mas[i] - 48)
  146. {
  147. ptr = ptr->down;
  148. if ((ptr->symb >= 'a' || ptr->symb >= 'A') && (ptr->symb <= 'Z' || ptr->symb <= 'z'))
  149. {
  150. str[t] = ptr->symb;
  151. t++;
  152. ptr = a.Ver;
  153. }
  154. }
  155. else
  156. {
  157. ptr = ptr->straight;
  158. if ((ptr->symb >= 'a' || ptr->symb >= 'A') && (ptr->symb <= 'Z' || ptr->symb <= 'z'))
  159. {
  160. str[t] = ptr->symb;
  161. t++;
  162. ptr = a.Ver;
  163. }
  164. }
  165. }
  166. str[t] = '\0';
  167. }
  168.  
  169. ostream & operator << (ostream&s, List &a)
  170. {
  171. Element *ptr = a.Ver, *ptrsave = ptr;
  172. int data;
  173. char symb;
  174. while (ptrsave->straight != 0)
  175. {
  176. ptr = ptrsave->down;
  177. data = ptr->data;
  178. symb = ptr->symb;
  179. while (ptr->previous->previous != 0)
  180. {
  181. ptr = ptr->previous;
  182. s << ptr->data;
  183. }
  184. s << data << " - " << symb << endl;
  185. ptrsave = ptrsave->straight;
  186. }
  187. ptr = ptrsave;
  188. while (ptr->previous != 0)
  189. {
  190. s << ptr->data;
  191. ptr = ptr->previous;
  192. }
  193. s << " - " << ptrsave->symb << endl;
  194. return s;
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement