Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.50 KB | None | 0 0
  1. #include "Ciag.hpp"
  2.  
  3.  
  4. static int ilosc=0;
  5. ciag::ciag()
  6. {
  7. ilosc++;
  8. rozmiar=0;
  9. }
  10.  
  11. ciag::operator const char*(){
  12. return tablica;
  13. }
  14. ciag::ciag(const char* tekst){
  15. ilosc++;
  16. rozmiar = strlen(tekst) ;
  17.  
  18. tablica = new char[rozmiar];
  19.  
  20. for (int i = 0; i < (rozmiar-1); i++)
  21. {
  22. tablica[i] = tekst[i];
  23. }
  24.  
  25. tablica[rozmiar - 1] = '\0';
  26.  
  27. }
  28. ciag::ciag(const ciag &oryginal){
  29. ilosc++;
  30. rozmiar = oryginal.rozmiar;
  31.  
  32. tablica = new char[rozmiar];
  33.  
  34. for (int i = 0; i < (rozmiar - 1); i++)
  35. {
  36. tablica[i] = oryginal.tablica[i];
  37. }
  38.  
  39. tablica[rozmiar - 1] = '\0';
  40. }
  41. ciag::~ciag(){
  42. ilosc--;
  43. }
  44.  
  45. int ciag::dl(){
  46. return rozmiar-1;
  47. }
  48.  
  49.  
  50. int ciag::ile(){
  51. return ilosc;
  52. }
  53.  
  54. ciag& ciag::operator= (const ciag& prawy){
  55. rozmiar = prawy.rozmiar;
  56.  
  57. tablica = new char[rozmiar];
  58.  
  59. for (int i = 0; i < (rozmiar - 1); i++)
  60. {
  61. tablica[i] = prawy.tablica[i];
  62. }
  63.  
  64. //add end of string symbol
  65. tablica[rozmiar - 1] = '\0';
  66.  
  67. return *this;
  68. }
  69.  
  70. ciag& ciag::operator+=(const ciag &prawy){
  71. ciag temp;
  72.  
  73. temp.rozmiar = (rozmiar-1) + prawy.rozmiar;
  74.  
  75.  
  76. temp.tablica = new char[temp.rozmiar];
  77.  
  78. for (int i = 0; i < (rozmiar-1) ; i++)
  79. {
  80. temp.tablica[i] = tablica[i];
  81. }
  82.  
  83. for (int i = 0; i < (prawy.rozmiar - 1 ); i++)
  84. {
  85. temp.tablica[(rozmiar-1) + i] = prawy.tablica[i];
  86. }
  87. rozmiar = temp.rozmiar;
  88. tablica = new char[rozmiar];
  89.  
  90. for (int i = 0; i < (rozmiar -1); i++)
  91. {
  92. tablica[i] = temp.tablica[i];
  93. }
  94. tablica[rozmiar - 1] = '\0';
  95. return *this;
  96. }
  97.  
  98. ciag& ciag::operator +=(const char * text)
  99. {
  100. ciag prawyCiag(text);
  101.  
  102. ciag temp;
  103.  
  104. temp.rozmiar = (rozmiar - 1) + prawyCiag.rozmiar;
  105.  
  106. temp.tablica = new char[temp.rozmiar];
  107.  
  108. for (int i = 0; i < (rozmiar - 1); i++)
  109. {
  110. temp.tablica[i] = tablica[i];
  111. }
  112.  
  113. for (int i = 0; i < (prawyCiag.rozmiar - 1); i++)
  114. {
  115. temp.tablica[(rozmiar - 1) + i] = prawyCiag.tablica[i];
  116. }
  117.  
  118. rozmiar = temp.rozmiar;
  119. tablica = new char[rozmiar];
  120.  
  121. for (int i = 0; i < (rozmiar - 1); i++)
  122. {
  123. tablica[i] = temp.tablica[i];
  124. }
  125.  
  126. //add end of string symbol
  127. tablica[rozmiar - 1] = '\0';
  128.  
  129. //std::cout <<"Fajny coag"<< pointer << std::endl;
  130.  
  131. return *this;
  132. }
  133. ciag operator+(const ciag& c1, const ciag& c2)
  134. {
  135. ciag temp;
  136.  
  137. temp.rozmiar = (c1.rozmiar -1) + c2.rozmiar;
  138.  
  139. temp.tablica = new char[temp.rozmiar];
  140.  
  141. for (int i = 0; i < (c1.rozmiar - 1); i++)
  142. {
  143. temp.tablica[i] = c1.tablica[i];
  144. }
  145.  
  146. for (int i = 0; i < (c2.rozmiar - 1); i++)
  147. {
  148. temp.tablica[(c1.rozmiar - 1) + i] = c2.tablica[i];
  149. }
  150.  
  151. temp.tablica[temp.rozmiar - 1] = '\0';
  152.  
  153. return temp;
  154. }
  155.  
  156. ostream& operator<< (ostream &wyjscie, const ciag &tekst){
  157. wyjscie<< tekst.tablica;
  158. return wyjscie;
  159.  
  160. }
  161.  
  162.  
  163. istream& operator>> (istream &wyjscie, ciag &tekst){
  164. string stxt;
  165. wyjscie >> stxt;
  166.  
  167. const char* ctxt = stxt.c_str();
  168.  
  169. tekst.rozmiar = strlen(ctxt) + 1 ;
  170.  
  171. tekst.tablica = new char[tekst.rozmiar];
  172.  
  173.  
  174. for (int i = 0; i < (tekst.rozmiar-1); i++)
  175. {
  176. tekst.tablica[i] = ctxt[i];
  177. }
  178.  
  179. tekst.tablica[tekst.rozmiar - 1] = '\0';
  180.  
  181. return wyjscie;
  182. }
  183.  
  184.  
  185.  
  186. int main() {
  187.  
  188. ciag A("_ciag_A_");
  189. ciag B;
  190. B = "_ciag_B_";
  191. B += A;
  192. cout << B << endl;
  193. cout << "istnieja : " << ciag::ile() << " ciagi" << endl;
  194. ciag C;
  195. cout << "Podaj ciag C : ";
  196. cin >> C;
  197. cout << C;
  198. ciag D;
  199. D = A + B + "_cos_";
  200. // cout << "istnieja : " << ciag::ile() << " ciagi" << endl;
  201. // A += "_dodaje_zwykly_ciag_";
  202. // C += A;
  203. // cout << A << endl << B << endl << C << endl << D << endl;
  204. // cout << "dlugosc A " << A.dl() << endl;
  205. // cout << "dlugosc B " << B.dl() << endl;
  206. // cout << "dlugosc C " << C.dl() << endl;
  207. // cout << "dlugosc D " << D.dl() << endl;
  208. // { ciag ZZ;
  209. // cout << "powstal ciag lokalny i istnieja : " << ciag::ile() << " ciagi" << endl;
  210. // }
  211. // cout << "a teraz znowu sa : " << A.ile() << " ciagi" << endl;
  212. // cout << "dziala operator konwersji i funkcja C strlen " << strlen(A) << endl;
  213. // cout << "dziala operator konwersji i funkcja C strlen " << strlen(B) << endl;
  214. // cout << "dziala operator konwersji i funkcja C strlen " << strlen(C) << endl;
  215. // cout << "dziala operator konwersji i funkcja C strlen " << strlen(D) << endl;
  216. return 0;
  217. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement