Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.31 KB | None | 0 0
  1. ///////////Car.h ////////////
  2.  
  3. #pragma once
  4.  
  5. #include <iostream>
  6. #include <string>
  7.  
  8. #include "Passenger.h"
  9.  
  10. using namespace std;
  11.  
  12. class Passenger;
  13. class Car
  14. {
  15.     private:
  16.         string destination;
  17.         double price;
  18.         Passenger **passengers;
  19.         int passengers_counter;
  20.         const int LIMIT;
  21.  
  22.  
  23.     public:
  24.         Car();
  25.         Car(string, double);
  26.         Car(const Car&);
  27.         ~Car();
  28.  
  29.         void updatePassengersCost();
  30.  
  31.         Car operator+=(Passenger&);
  32.         Car operator-=(Passenger&);
  33.  
  34.         //Car operator += (Passenger**&);
  35.  
  36.         bool operator==(const Car&);
  37.         bool operator!=(const Car&);
  38.  
  39.         Car &operator++();
  40.         Car operator++(int);
  41.  
  42.         friend ostream &operator<<(ostream&, const Car&);
  43.         friend ostream &operator<<(ostream&, const Car*);
  44. };
  45.  
  46. //////////////////Car.cpp//////////////////////////
  47.  
  48. #pragma once
  49.  
  50. #include <iostream>
  51. #include <string>
  52.  
  53. #include "Passenger.h"
  54.  
  55. using namespace std;
  56.  
  57. class Passenger;
  58. class Car
  59. {
  60.     private:
  61.         string destination;
  62.         double price;
  63.         Passenger **passengers;
  64.         int passengers_counter;
  65.         const int LIMIT;
  66.  
  67.  
  68.     public:
  69.         Car();
  70.         Car(string, double);
  71.         Car(const Car&);
  72.         ~Car();
  73.  
  74.         void updatePassengersCost();
  75.  
  76.         Car operator+=(Passenger&);
  77.         Car operator-=(Passenger&);
  78.  
  79.         //Car operator += (Passenger**&);
  80.  
  81.         bool operator==(const Car&);
  82.         bool operator!=(const Car&);
  83.  
  84.         Car &operator++();
  85.         Car operator++(int);
  86.  
  87.         friend ostream &operator<<(ostream&, const Car&);
  88.         friend ostream &operator<<(ostream&, const Car*);
  89. };
  90.  
  91. /////////////////Passenger.h////////////////////////////////
  92.  
  93. #pragma once
  94.  
  95. #include <iostream>
  96. #include <string>
  97.  
  98. using namespace std;
  99.  
  100. class Passenger
  101. {
  102.     private:
  103.         string name;
  104.         double cost;
  105.  
  106.     public:
  107.  
  108.         friend class Car;
  109.  
  110.         Passenger();
  111.         Passenger(const Passenger*);
  112.         Passenger(string);
  113.         Passenger(string, double);
  114.        
  115.         //Passenger &operator = (const Passenger*);
  116.  
  117.         bool operator == (Passenger&);
  118.  
  119.         friend ostream &operator << (ostream&, const Passenger&);
  120.         friend ostream &operator << (ostream&, const Passenger*);
  121. };
  122.  
  123. ///////////////Passenger.cpp/////////////////////////////
  124. #include "Passenger.h"
  125.  
  126.  
  127.  
  128. Passenger::Passenger(): name("Nobody"), cost(0) {}
  129.  
  130. Passenger::Passenger(const Passenger *passenger): name(passenger->name), cost(passenger->cost) {}
  131.  
  132. Passenger::Passenger(string name): name(name), cost(0) {}
  133. Passenger::Passenger(string name, double cost) : name(name), cost(cost) {}
  134.  
  135. bool Passenger::operator == (Passenger &passenger){
  136.     return this->name == passenger.name && this->cost == passenger.cost;
  137. }
  138.  
  139. /*Passenger &Passenger::operator = (const Passenger *passenger)
  140. {
  141.     return Passenger(passenger->name);
  142. }*/
  143.  
  144. ///////////////////Main.cpp///////////////////////////////
  145. #include <iostream>
  146. #include <string>
  147.  
  148. #include "Car.h"
  149.  
  150. using namespace std;
  151.  
  152. int main() {
  153.     setlocale(LC_ALL, "Polish");
  154.  
  155.     Passenger a("Jan");
  156.     Passenger tab[5];
  157.  
  158.     for (int i = 0; i < 5; i++) {
  159.         tab[i] = new Passenger("Adam " + to_string(i));
  160.     }
  161.  
  162.     Car s("Kraków", 100);
  163.  
  164.     cout << "s: " << endl << s << endl;
  165.  
  166.     s += a;
  167.  
  168.     cout << "s += a: " << endl << s << endl;
  169.    
  170.     s += tab[0];
  171.     s += tab[1];
  172.  
  173.     cout << "s += tab[0] oraz tab[1]: " << endl << s << endl;
  174.  
  175.  
  176.     Car bkp(s);
  177.  
  178.     cout << "bkp(s): " << endl << s << endl;
  179.  
  180.     if (s == bkp) cout << "tacy sami.." << endl;
  181.  
  182.     s -= a;
  183.  
  184.     cout << "s -= a: " << endl << s << endl;
  185.  
  186.     if (s != bkp) cout << "a sciana miedzy nami" << endl;
  187.  
  188.     cout << "s++: " << endl << s++ << endl;
  189.     cout << "++s: " << endl << ++s << endl;
  190.  
  191.     cout << "s: " << endl << s << endl << "bkp: " << endl << bkp << endl;
  192.  
  193.     system("PAUSE");
  194.     return 0;
  195. }
  196.  
  197. ostream &operator<<(ostream &cout, const Passenger &passenger) {
  198.     return cout << passenger.name << " (" << passenger.cost << ") ";
  199. }
  200.  
  201. ostream &operator<<(ostream &cout, const Passenger *passenger) {
  202.     if (passenger == nullptr)
  203.         return cout << "None";
  204.  
  205.     return cout << passenger->name << " (" << passenger->cost << ") ";
  206. }
  207.  
  208. ostream &operator<<(ostream &cout, const Car &car)
  209. {
  210.     cout << "Destination: " << car.destination << ", price: " << car.price << " (" << car.passengers_counter << "/" << car.LIMIT << ")" << endl;
  211.  
  212.     for (int i = 0; i < car.LIMIT; i++) {
  213.         if(car.passengers[i] != nullptr)
  214.             cout << car.passengers[i] << endl;
  215.     }
  216.  
  217.     return cout;
  218. }
  219.  
  220. ostream &operator<<(ostream &cout, const Car *car)
  221. {
  222.     return cout << car;
  223. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement