Advertisement
nastiia_firefly

Untitled

Dec 2nd, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.35 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include "Person.h"
  5.  
  6. void TString::SetStr(char* ob)
  7. {
  8.     //delete[] str;
  9.     str = new char[strlen(ob)+1];
  10.     strcpy(str+1,ob);
  11.     str[0] = strlen(ob);
  12.     //cout<<"Set Str Worked\n";
  13. }
  14. TString::TString()
  15. {
  16.     char buf[100];
  17.     sprintf(buf,"Just Like Heaven"); //12
  18.     SetStr(buf);
  19. }
  20. TString::TString(char* Str)
  21. {
  22.     SetStr(Str);
  23. }
  24. TString::TString(const TString &ob)
  25. {
  26.     SetStr(ob.str);
  27. }
  28.  
  29. TString::~TString()
  30. {
  31.    cout<<"Destructor Worked\n";
  32.    if(str!=NULL)
  33.    delete[]str;
  34. }
  35.  
  36. void TString::operator=(const TString &s)
  37. {
  38.     SetStr(s.str+1);
  39.    // return *this;
  40. }
  41. TString TString::operator+(const TString &s2)const
  42. {
  43.     TString sop;
  44.     sop.GetStr();
  45.     strcpy(sop.str+1,str+1);
  46.     strcat(sop.str+str[0],s2.str+1);
  47.     sop.str[0]=strlen(sop.str)-1;
  48.  
  49.     return sop;
  50. }
  51. int  TString::GetLength()
  52. {
  53.     return str[0];
  54. }
  55. void TString::output()
  56. {
  57.    cout<<"String : "<<GetStr()<<endl;
  58.    cout<<"Length = "<<GetLength()<<endl;
  59. }
  60.  
  61. TString TString::operator%(TString &s2)//логічне додавання ,додає до першого  те, чого нема в другому .
  62.                                        //ну, не додає,але мало б
  63. {
  64.     TString sop;
  65.     int k;
  66.     int sz=str[0]+s2.str[0];
  67.     sop.str=new char[sz+1];
  68.     strcpy(sop.str+1,str+1);
  69.  
  70.     delete[]str;
  71.  
  72. bool flag=true;
  73.  
  74.     for(int j=1, k=strlen(sop.str)-1; j<=s2.str[0]; j++) //sop.str[0]
  75.     {
  76.         flag=true;
  77.  
  78.         for(int i=1;i<=sop.str[0];i++)
  79.         {
  80.             if(sop.str[i]==s2.str[j])
  81.             {
  82.                     flag=false;
  83.                     break;
  84.             }
  85.         }
  86.         if(flag)
  87.         {
  88.  
  89.             sop.str[k+1]=s2.str[j];
  90.             k++;
  91.         }
  92.     }
  93. sop.str[0]=strlen(sop.str)-1;
  94. return sop;
  95. }
  96.  
  97. void TString::input()
  98. {
  99.    char buffer[300];
  100.  
  101.    cout<<"Input string\n";
  102.    cin.getline(buffer,300);
  103.    SetStr(buffer);
  104. }
  105.  
  106. int find_s2_in_s1(TString &s1, TString &s2)
  107. {
  108.     int rez;
  109.     s1.output();
  110.     s2.output();
  111.     if(strstr((s1.str+1), (s2.str+1))!=NULL)
  112.     rez = strstr((s1.str+1), (s2.str+1)) - s1.str;
  113.     else return rez=0;
  114. return rez;
  115. }
  116. TString ClearPoz(TString &s)
  117. {
  118.  int poz=0;
  119.     int n=1;
  120.  
  121.     cout<<"Clear from : "<<(s.str+1)<<endl;
  122.     cin>>poz;
  123.     cout<<"Number\n";
  124.     cin>>n;
  125.  
  126.     TString buff;
  127.  
  128.     buff.str=new char[strlen(s.str)-1];
  129.     buff.str[0]=(char)strlen(s.str)-poz;
  130.  
  131.     strcpy(buff.str,s.str);
  132.  
  133.     for(int i =poz , j = poz; i < buff.str[0]; i++)
  134.        if(i >= poz + n)
  135.             {
  136.                 s.str[j] = buff.str[i]; j++;
  137.             }
  138.  
  139.  
  140. return s;
  141.  
  142. }
  143. bool TString::operator==(const TString &s)const// length compare є [==;>=]
  144. {
  145.     return (this->str[0]==s.str[0]) ? true : false;
  146. }
  147. bool TString::operator!=(const TString &s)const
  148. {
  149.     return (this->str[0]!=s.str[0]) ? true : false;
  150. }
  151. bool TString::operator<(const TString &s)const
  152. {
  153.     return (this->str[0]<s.str[0]) ? true : false;
  154. }
  155. bool TString::operator>(const TString &s)const
  156. {
  157.     return (this->str[0]>s.str[0]) ? true : false;
  158. }
  159. bool TString::operator<=(const TString &s)const
  160. {
  161.     return (this->str[0]<=s.str[0]) ? true : false;
  162. }
  163. bool TString::operator>=(const TString &s)const
  164. {
  165.     return (this->str[0]>=s.str[0]) ? true : false;
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement