fork download
  1. #include <vector>
  2. #include <string>
  3. #include <iostream>
  4. #include <iomanip>
  5.  
  6. using namespace std;
  7.  
  8. class Car{ //класс машины (марки машин)
  9. public:
  10. Car(){} // конструктор умолчания
  11. Car(string m, string c, int p, string a):mark(m),color(c),adress(a),price(p){}
  12. Car(const Car&) = default;
  13. Car& operator=(const Car&) = default;
  14. ~Car() = default;
  15.  
  16. void print(){ // вывод элементов на уровне класса "машины"
  17. cout << endl << mark << ", цвет: " << color << ", цена: " << price << " адрес: " << adress << endl;
  18. }
  19. private:
  20. string mark;
  21. string color;
  22. string adress;
  23. int price;
  24. };
  25.  
  26. Car read()
  27. {
  28. int price;
  29. string mark, color, adress;
  30. cout << "\nВведите марку машины: ";
  31. cin >> mark;
  32. cout << "\nВведите цвет машины: ";
  33. cin >> color;
  34. cout << "\nВведите адрес: ";
  35. cin >> adress;
  36. cout << "\nВведите цену: ";
  37. cin >> price;
  38. return Car(mark, color, price, adress);
  39. }
  40.  
  41. class stack { // класс "стек"
  42. public:
  43. stack(): cars(new Car[4]), size(0), capacity(4) {}
  44. stack(const stack&) = delete;
  45. stack& operator=(const stack&) = delete;
  46. ~stack() { delete[] cars; }
  47.  
  48. void push(const Car& c)
  49. {
  50. if (size == capacity)
  51. {
  52. Car * tmp = new Car[capacity*=2];
  53. for(int i = 0; i < size; ++i) tmp[i] = cars[i];
  54. delete[] cars;
  55. cars = tmp;
  56. }
  57. cars[size++] = c;
  58. }
  59. Car pop()
  60. {
  61. if (size == 0) throw runtime_error("Stack is empty");
  62. return cars[--size];
  63. }
  64. private:
  65. int size, capacity;
  66. Car *cars;
  67. };
  68.  
  69. int main(int argc, const char * argv[])
  70. {
  71. stack st;
  72. st.push(read());
  73. st.pop().print();
  74. st.push(read());
  75. st.push(read());
  76. st.pop().print();
  77. st.pop().print();
  78. }
  79.  
Success #stdin #stdout 0s 4328KB
stdin
1 1 1 1
2 2 2 2
3 3 3 3
stdout
Введите марку машины: 
Введите цвет машины: 
Введите адрес: 
Введите цену: 
1, цвет: 1, цена: 1 адрес: 1

Введите марку машины: 
Введите цвет машины: 
Введите адрес: 
Введите цену: 
Введите марку машины: 
Введите цвет машины: 
Введите адрес: 
Введите цену: 
3, цвет: 3, цена: 3 адрес: 3

2, цвет: 2, цена: 2 адрес: 2