Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.45 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. class Autobuz
  8. {
  9. private:
  10. int nrLinie;
  11. char* marcaAutobuz = NULL;
  12. int nrCurseZilnice;
  13. int nrLocuri;
  14. public:
  15. static int pretBilet;
  16.  
  17. ///////////////////////////////////////////////////////Constructor default
  18. Autobuz()
  19. {
  20. nrLinie = 0;
  21. marcaAutobuz = new char[strlen("nespecificat") + 1];
  22. strcpy(marcaAutobuz, "nespecificat");
  23. nrCurseZilnice = 0;
  24. nrLocuri = 0;
  25.  
  26. cout << "Constructor default" << endl;
  27. }
  28.  
  29. ///////////////////////////////////////////////////////Constructor cu parametri
  30. Autobuz(int nrLinie, const char* marcaAutobuz)
  31. {
  32. this->nrLinie = nrLinie;
  33. this->marcaAutobuz = new char[strlen(marcaAutobuz) + 1];
  34. strcpy(this->marcaAutobuz, marcaAutobuz);
  35. this->nrCurseZilnice = 0;
  36. this->nrLocuri = 0;
  37.  
  38. cout << "Constructor cu parametri" << endl;
  39. }
  40.  
  41. Autobuz(const char* marcaAutobuz, int nrCurseZilnice, int nrLocuri)
  42. {
  43. this->nrLinie = 0;
  44. this->marcaAutobuz = new char[strlen(marcaAutobuz) + 1];
  45. strcpy(this->marcaAutobuz, marcaAutobuz);
  46. this->nrCurseZilnice = nrCurseZilnice;
  47. this->nrLocuri = nrLocuri;
  48.  
  49. cout << "Constructor cu parametri" << endl;
  50. }
  51.  
  52. //////////////////////////////////////////////////////Constructor de copiere
  53. Autobuz(const Autobuz& copy)
  54. {
  55. this->nrLinie = copy.nrLinie;
  56. this->marcaAutobuz = new char[strlen(copy.marcaAutobuz) + 1];
  57. strcpy(this->marcaAutobuz, copy.marcaAutobuz);
  58. this->nrCurseZilnice = copy.nrCurseZilnice;
  59. this->nrLocuri = copy.nrLocuri;
  60.  
  61. cout << "S-a apelat constructorul de copiere" << endl;
  62.  
  63. }
  64.  
  65. ////////////////////////////////////////////////////Operator =
  66. Autobuz& operator=(const Autobuz& copie)
  67. {
  68. delete[] marcaAutobuz;
  69.  
  70. this->nrLinie = copie.nrLinie;
  71. this->marcaAutobuz = new char[strlen(copie.marcaAutobuz) + 1];
  72. strcpy(this->marcaAutobuz, copie.marcaAutobuz);
  73. this->nrCurseZilnice = copie.nrCurseZilnice;
  74. this->nrLocuri = copie.nrLocuri;
  75.  
  76. cout << "S-a apelat operatorul =" << endl;
  77.  
  78. return *this;
  79.  
  80. }
  81.  
  82. ///////////////////////////Metoda venit maxim
  83. int venitMaxim()
  84. {
  85. return nrCurseZilnice * nrLocuri * pretBilet;
  86. }
  87. //////////////////////////Metoda realizare cursa
  88. bool poateRealizaCursa(int nrLocuri)
  89. {
  90. if (this->nrLocuri > nrLocuri)
  91. {
  92. //cout << "DA" << endl;
  93. return true;
  94. }
  95. else
  96. {
  97. //cout << "NU" << endl;
  98. return false;
  99. }
  100. }
  101. ///////////////////////////////////////////////////////Metoda salvare in fisier
  102. void Save(string numeFisier)
  103. {
  104. ofstream f;
  105. f.open(numeFisier, ios::out | ios::binary);
  106. if (f.is_open())
  107. {
  108. f.write((char*)&nrLinie, sizeof(int));
  109. int temp = strlen(marcaAutobuz + 1);
  110. f.write((char*)&temp, sizeof(int));
  111. f.write(marcaAutobuz, strlen(marcaAutobuz) + 1);
  112. f.write((char*)&nrCurseZilnice, sizeof(int));
  113. f.write((char*)&nrLocuri, sizeof(int));
  114. f.write((char*)&pretBilet, sizeof(int));
  115.  
  116. }
  117. f.close();
  118. }
  119. //////////////////////////////////////////////////Metoda Luat din fisier
  120. void Load(string numeFisier)
  121. {
  122. ifstream f;
  123. f.open(numeFisier, ios::in | ios::binary);
  124. if (f.is_open())
  125. {
  126. f.read((char*)&nrLinie, sizeof(int));
  127. int temp = 0;
  128. f.read((char*)&temp, sizeof(int));
  129. if (marcaAutobuz != NULL)
  130. {
  131. delete[] marcaAutobuz;
  132. }
  133. marcaAutobuz = new char[temp];
  134. f.read(marcaAutobuz, temp);
  135. f.read((char*)&nrCurseZilnice, sizeof(int));
  136. f.read((char*)&nrLocuri, sizeof(int));
  137. f.read((char*)&pretBilet, sizeof(int));
  138. }
  139. f.close();
  140. }
  141.  
  142. //////////////////////////////////////setter nume
  143. void setMarca(char* n)
  144. {
  145. if (this->marcaAutobuz)
  146. {
  147. delete[] this->marcaAutobuz;
  148. }
  149. this->marcaAutobuz = new char[strlen(n) + 1];
  150. strcpy(this->marcaAutobuz, n);
  151. }
  152.  
  153.  
  154.  
  155. void Display()
  156. {
  157. cout << "NrLinie " << nrLinie << endl;
  158. cout << "MarcaAutobuz " << marcaAutobuz << endl;
  159. cout << "NrCurseZIlnice " << nrCurseZilnice << endl;
  160. cout << "NrLocuri " << nrLocuri << endl;
  161. cout << "PretBilet " << pretBilet << endl;
  162. }
  163.  
  164. //////////////////////////////////////////////////////Destrucor
  165. ~Autobuz()
  166. {
  167. if (marcaAutobuz != NULL)
  168. {
  169. delete[] this->marcaAutobuz;
  170. }
  171.  
  172. cout << "Destructor apelat" << endl;
  173. }
  174.  
  175. Autobuz operator+(int value)
  176. {
  177. Autobuz copie = *this;
  178. copie.nrCurseZilnice += value;
  179. return copie;
  180. }
  181.  
  182. friend ostream& operator<<(ostream&, Autobuz);
  183. //friend int operator+(Autobuz&,int);
  184. friend Autobuz operator+(int, Autobuz);
  185. friend istream& operator>>(istream&, Autobuz&);
  186. bool operator<(const Autobuz& a)
  187. {
  188. if (this->nrCurseZilnice < a.nrCurseZilnice)
  189. {
  190. return true;
  191. }
  192. else
  193. {
  194. return false;
  195. }
  196. }
  197. };
  198.  
  199. class Autobaza
  200. {
  201. private:
  202. int nrAutobuze;
  203. Autobuz** vector;
  204. public:
  205.  
  206.  
  207. };
  208.  
  209. Autobuz operator+(int value, Autobuz a)
  210. {
  211. a.nrCurseZilnice += value;
  212. return a;
  213.  
  214. }
  215.  
  216. //int operator+(int x, Autobuz& c)
  217. //{
  218. // return c.nrCurseZilnice + x;
  219. //}
  220.  
  221. //int operator+(Autobuz& c, int x)
  222. //{
  223. // return c.nrCurseZilnice + x;
  224. //}
  225.  
  226. ostream& operator<<(ostream& out, Autobuz aux)
  227. {
  228. out << "NrLinie: " << aux.nrLinie << endl;
  229. out << "MarcaAutobuz: " << aux.marcaAutobuz << endl;
  230. out << "NrCurseZilnice: " << aux.nrCurseZilnice << endl;
  231. out << "NrLocuri: " << aux.nrLocuri << endl;
  232. out << "PretBilet: " << aux.pretBilet << endl;
  233.  
  234. return out;
  235. }
  236.  
  237. istream& operator>>(istream& in, Autobuz& aux)
  238. {
  239. cout << "NrLinie: ";
  240. in >> aux.nrLinie;
  241. cout <<endl<< "MarcaAutobuz: ";
  242. char buffer[100];
  243. in >> buffer;
  244. aux.setMarca(buffer);
  245. cout << endl << "NrCurseZIlnice: ";
  246. in >> aux.nrCurseZilnice;
  247. cout << endl << "PretBilet: ";
  248. in >> aux.pretBilet;
  249.  
  250. return in;
  251.  
  252. }
  253.  
  254. int Autobuz::pretBilet = 15;
  255.  
  256. int main()
  257. {
  258. Autobuz a1("MB", 2, 20);
  259. Autobuz a2("BMW", 3, 15);
  260. if (a1 < a2)
  261. {
  262. cout << "Primul autobuz are mai putine locuri";
  263. }
  264. else
  265. {
  266. cout << "Primul autobuz are mai multe locuri";
  267. }
  268.  
  269. //a1.Display();
  270.  
  271. //Autobuz a2(5, "otokar");
  272. //a2.Display();
  273.  
  274. //Autobuz a3(a2);
  275. //a3.Display();
  276.  
  277. //Autobuz a4;
  278. //a4 = a3;
  279. //a4.Display();
  280.  
  281. //Autobuz a5("MB", 2, 10);
  282. //cout << a5.venitMaxim() << endl;
  283. //a5.poateRealizaCursa(5);
  284. //a5.poateRealizaCursa(15);
  285.  
  286. //cout<<a5<<endl;
  287.  
  288. //Autobuz a6;
  289. //cin >> a6;
  290. //a6.Display();
  291. //a1.Display();
  292. //cout << a6 + 3 << endl;
  293. //cout << 3 + a6 << endl;
  294. //a6 = a6 + 2;
  295. //a6 = 2 + a6;
  296. /*cout << endl << "-----------------------";
  297.  
  298. a6.Display();
  299. cout << endl << "-----------------------";*/
  300.  
  301.  
  302. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement