Advertisement
Guest User

Untitled

a guest
May 26th, 2015
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. class Date
  5. {
  6. private:
  7. unsigned int d, m, g;
  8. public:
  9. // инициализирующий конструктор
  10. Date(unsigned int D, unsigned int M, unsigned int G)
  11. {
  12. if(D < 31 && M < 13 && G <= 2015)
  13. d = D, m = M, g = G;
  14. else
  15. d = m = g = 0, cerr << "incorrect data" << endl;
  16. }
  17. // конструктор по умолчанию
  18. Date(){}
  19. void PrintEn()
  20. {
  21. d > 9 ? cout << "\n" << d << '/' << m << '/'<< g << "." << endl : cout << "\n" <<"0"<< d<<'/' << m << '/'<< g << "."<< endl;
  22. }
  23. unsigned int GetDay() { return d; }
  24. unsigned int GetMon() { return m; }
  25. unsigned int GetYear() { return g; }
  26. void SetDay(unsigned int _d) { if(_d < 31) d =_d; else d = m = g = 0, cerr << "incorrect data" << endl; }
  27. void SetMon (unsigned int _m) { if(_m < 13) m =_m; else d = m = g = 0, cerr << "incorrect data" << endl; }
  28. void SetYear (unsigned int _g) { if(_g <= 2015) g =_g; else d = m = g = 0, cerr << "incorrect data" << endl; }
  29.  
  30. //разница в днях с заданным временем
  31. int Difference (Date t)
  32. {
  33. return (t.GetDay() - d) + (t.GetMon() - m)*30 + (t.GetYear() - g)*365;
  34. }
  35. };
  36.  
  37. class Car : public Date
  38. {
  39. private:
  40. string mark, number;
  41. public:
  42. // инициализирующий конструктор
  43. Car(string Mark, string Number, unsigned int D, unsigned int M, unsigned int G):Date(D, M, G)
  44. {
  45. mark = Mark;
  46. number = Number;
  47. }
  48.  
  49. // конструктор по умолчанию
  50. Car(){}
  51. void PrintEn_Car()
  52. {
  53. cout << "\n" << mark <<' '<< number;
  54. PrintEn();
  55. }
  56. string GetMark() { return mark; }
  57. string GetNumber() { return number; }
  58. void SetMark(string _mark) { mark = _mark; }
  59. void SetNumber (string _number) { number = _number; }
  60.  
  61. //какой автомобиль из двух пройдет тех.осмотр раньше
  62. Car & Start (Car s)
  63. {
  64. if (Difference(s) < 0)
  65. return s;
  66. else
  67. return *this ;}
  68. };
  69.  
  70. int main ()
  71. {
  72. // Создаем первый объект
  73. unsigned int d, m, g;
  74. string mark, number;
  75. cout << "\n Enter\n d= ";
  76. cin >> d;
  77. cout << " m= ";
  78. cin >> m;
  79. cout << " g= ";
  80. cin >> g;
  81. cout << " mark = ";
  82. cin >> mark;
  83. cout << " number = ";
  84. cin >> number;
  85. Car s1(mark, number, d, m, g);// используется инициализирующий конструктор
  86. cout << "\nCar 1 ";
  87. s1.PrintEn_Car();
  88.  
  89. // Создаем, инициализируем второй объект
  90. Car s2("Toyota", "q123rt", 10, 12, 2010); // используется инициализирующий конструктор
  91. cout << "\nCar 2 ";
  92. s2.PrintEn_Car();
  93.  
  94. // Создаем третий объект
  95. Car s3; // используется конструктор по умолчанию
  96. s3.SetDay(8);
  97. s3.SetMon(11);
  98. s3.SetYear(2012);
  99. s3.SetMark("Lexus");
  100. s3.SetNumber ("a777df");
  101. cout << "\nCar 3 ";
  102. s3.PrintEn_Car();
  103.  
  104. // Определяем, какой автомобиль пройдет тех.осмотр раньше
  105. Car s4 = s1.Start(s2);
  106. Car s4 = s4.Start(s3);
  107. cout << "\n Before starting:\n";
  108. s4.PrintEn_Car();
  109. cout<<endl;
  110. system ("pause");
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement