ivanakarpuzova

Untitled

Sep 3rd, 2017
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. //vashiot kod tuka
  6. class IndexOutOfBounds{};
  7.  
  8. class Kontakt
  9. {
  10. private:
  11. char *ime;
  12. char prezime[30];
  13. public:
  14. char *getIme()
  15. {
  16. return ime;
  17. }
  18. char *getPrezime()
  19. {
  20. return prezime;
  21. }
  22. Kontakt(char *Ime = "", char *Prezime ="")
  23. {
  24. ime= new char[strlen(Ime)+1];
  25. strcpy(ime,Ime);
  26. strcpy(prezime,Prezime);
  27. }
  28.  
  29. Kontakt& operator=(const Kontakt &k)
  30. {
  31. ime= new char[strlen(k.ime)+1];
  32. strcpy(ime,k.ime);
  33. strcpy(prezime,k.prezime);
  34. return *this;
  35. }
  36.  
  37. ~Kontakt(){
  38. delete [] ime;
  39. }
  40.  
  41. char& operator[] (int i)
  42. { if(i<0 || i >= strlen(prezime))
  43. throw IndexOutOfBounds();
  44. else
  45. return prezime[i];
  46. }
  47.  
  48. };
  49.  
  50.  
  51. class Imenik
  52. {
  53. private:
  54. Kontakt *kontakti;
  55. int brojKontakti;
  56. public:
  57. Imenik()
  58. {
  59. brojKontakti=0;
  60. kontakti = new Kontakt[brojKontakti];
  61. }
  62. ~Imenik()
  63. {
  64. delete [] kontakti;
  65. }
  66.  
  67. Imenik& operator+=(const Kontakt &k)
  68. {
  69. Kontakt *tmp = new Kontakt[brojKontakti+1];
  70. for(int i=0;i<brojKontakti;i++)
  71. {
  72. tmp[i]=kontakti[i];
  73. }
  74. tmp[brojKontakti]=k;
  75. delete [] kontakti;
  76. kontakti=tmp;
  77. brojKontakti++;
  78.  
  79. }
  80.  
  81. friend ostream& operator<<( ostream &out, Imenik &im)
  82. {
  83. for(int i=0;i<im.brojKontakti;i++)
  84. {
  85. return out<<im.kontakti[i].getIme() << " " << im.kontakti[i].getPrezime()<<endl;
  86. }
  87. }
  88. };
  89. int main() {
  90. char ime[20],prezime[30];
  91. int n;
  92. cin >> n;
  93. if(n == 0) {
  94. cout << "Konstruktori na Kontakt" << endl;
  95.  
  96. cin>>ime>>prezime;
  97.  
  98. Kontakt k1(ime, prezime);
  99. cout << "OK" << endl;
  100. } else if(n == 1) {
  101. cout << "[] operator" << endl;
  102. cin>>ime>>prezime;
  103. Kontakt k1(ime, prezime);
  104. cout << "a[0] = " << k1[0] << endl;
  105. cout << "a[1] = " << k1[1] << endl;
  106. cout << "a[2] = " << k1[2] << endl;
  107. } else if(n == 2) {
  108. cout << "Isklucok" << endl;
  109. cin>>ime>>prezime;
  110. Kontakt k1(ime, prezime);
  111. try {
  112. cout << k1[-1] << endl;
  113. }
  114. catch (IndexOutOfBounds)
  115. {
  116. cout<<"Index out of bounds"<<endl;
  117. }
  118. //vashiot kod tuka
  119.  
  120. } else if(n == 3) {
  121. cout << "Imenik constructor" << endl;
  122. Imenik im;
  123. cout << "OK" << endl;
  124. } else if(n == 4) {
  125. cout << "Imenik += and cout" << endl;
  126. Imenik im;
  127. cin>>ime>>prezime;
  128. Kontakt k1(ime, prezime);
  129. cin>>ime>>prezime;
  130. Kontakt k2(ime, prezime);
  131. cin>>ime>>prezime;
  132. Kontakt k3(ime, prezime);
  133. im += k1;
  134. im += k2;
  135. im += k3;
  136. cout << im << endl;
  137.  
  138. }
  139.  
  140. return 0;
  141. }
Advertisement
Add Comment
Please, Sign In to add comment