#include <vector>
#include <string>
#include <iostream>
#include <iomanip>
using namespace std;
class Car{ //класс машины (марки машин)
public:
Car(){} // конструктор умолчания
Car(string m, string c, int p, string a):mark(m),color(c),adress(a),price(p){}
Car(const Car&) = default;
Car& operator=(const Car&) = default;
~Car() = default;
void print(){ // вывод элементов на уровне класса "машины"
cout << endl << mark << ", цвет: " << color << ", цена: " << price << " адрес: " << adress << endl;
}
private:
string mark;
string color;
string adress;
int price;
};
Car read()
{
int price;
string mark, color, adress;
cout << "\nВведите марку машины: ";
cin >> mark;
cout << "\nВведите цвет машины: ";
cin >> color;
cout << "\nВведите адрес: ";
cin >> adress;
cout << "\nВведите цену: ";
cin >> price;
return Car(mark, color, price, adress);
}
class stack { // класс "стек"
public:
stack(): cars(new Car[4]), size(0), capacity(4) {}
stack(const stack&) = delete;
stack& operator=(const stack&) = delete;
~stack() { delete[] cars; }
void push(const Car& c)
{
if (size == capacity)
{
Car * tmp = new Car[capacity*=2];
for(int i = 0; i < size; ++i) tmp[i] = cars[i];
delete[] cars;
cars = tmp;
}
cars[size++] = c;
}
Car pop()
{
if (size == 0) throw runtime_error("Stack is empty");
return cars[--size];
}
private:
int size, capacity;
Car *cars;
};
int main(int argc, const char * argv[])
{
stack st;
st.push(read());
st.pop().print();
st.push(read());
st.push(read());
st.pop().print();
st.pop().print();
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBDYXJ7IC8v0LrQu9Cw0YHRgSDQvNCw0YjQuNC90YsgKNC80LDRgNC60Lgg0LzQsNGI0LjQvSkKcHVibGljOgogICAgQ2FyKCl7fSAvLyDQutC+0L3RgdGC0YDRg9C60YLQvtGAINGD0LzQvtC70YfQsNC90LjRjwogICAgQ2FyKHN0cmluZyBtLCBzdHJpbmcgYywgaW50IHAsIHN0cmluZyBhKTptYXJrKG0pLGNvbG9yKGMpLGFkcmVzcyhhKSxwcmljZShwKXt9CiAgICBDYXIoY29uc3QgQ2FyJikgICAgICAgICAgICA9IGRlZmF1bHQ7CiAgICBDYXImIG9wZXJhdG9yPShjb25zdCBDYXImKSA9IGRlZmF1bHQ7CiAgICB+Q2FyKCkgICAgICAgICAgICAgICAgICAgICA9IGRlZmF1bHQ7CgogICAgdm9pZCBwcmludCgpeyAvLyDQstGL0LLQvtC0INGN0LvQtdC80LXQvdGC0L7QsiDQvdCwINGD0YDQvtCy0L3QtSDQutC70LDRgdGB0LAgItC80LDRiNC40L3RiyIKICAgICAgICBjb3V0IDw8IGVuZGwgPDwgbWFyayA8PCAiLCDRhtCy0LXRgjogIiA8PCBjb2xvciA8PCAiLCDRhtC10L3QsDogIiA8PCBwcmljZSA8PCAiINCw0LTRgNC10YE6ICIgPDwgYWRyZXNzIDw8IGVuZGw7CiAgICB9CnByaXZhdGU6CiAgICBzdHJpbmcgbWFyazsKICAgIHN0cmluZyBjb2xvcjsKICAgIHN0cmluZyBhZHJlc3M7CiAgICBpbnQgcHJpY2U7Cn07CgpDYXIgcmVhZCgpCnsKICAgIGludCBwcmljZTsKICAgIHN0cmluZyBtYXJrLCBjb2xvciwgYWRyZXNzOwogICAgY291dCA8PCAiXG7QktCy0LXQtNC40YLQtSDQvNCw0YDQutGDINC80LDRiNC40L3RizogIjsKICAgIGNpbiA+PiBtYXJrOwogICAgY291dCA8PCAiXG7QktCy0LXQtNC40YLQtSDRhtCy0LXRgiDQvNCw0YjQuNC90Ys6ICI7CiAgICBjaW4gPj4gY29sb3I7CiAgICBjb3V0IDw8ICJcbtCS0LLQtdC00LjRgtC1INCw0LTRgNC10YE6ICI7CiAgICBjaW4gPj4gYWRyZXNzOwogICAgY291dCA8PCAiXG7QktCy0LXQtNC40YLQtSDRhtC10L3RgzogIjsKICAgIGNpbiA+PiBwcmljZTsKICAgIHJldHVybiBDYXIobWFyaywgY29sb3IsIHByaWNlLCBhZHJlc3MpOwp9CgpjbGFzcyBzdGFjayB7IC8vINC60LvQsNGB0YEgItGB0YLQtdC6IgpwdWJsaWM6CiAgICBzdGFjaygpOiBjYXJzKG5ldyBDYXJbNF0pLCBzaXplKDApLCBjYXBhY2l0eSg0KSB7fQogICAgc3RhY2soY29uc3Qgc3RhY2smKSA9IGRlbGV0ZTsKICAgIHN0YWNrJiBvcGVyYXRvcj0oY29uc3Qgc3RhY2smKSA9IGRlbGV0ZTsKICAgIH5zdGFjaygpIHsgZGVsZXRlW10gY2FyczsgfQoKICAgIHZvaWQgcHVzaChjb25zdCBDYXImIGMpCiAgICB7CiAgICAgICAgaWYgKHNpemUgPT0gY2FwYWNpdHkpCiAgICAgICAgewogICAgICAgICAgICBDYXIgKiB0bXAgPSBuZXcgQ2FyW2NhcGFjaXR5Kj0yXTsKICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgdG1wW2ldID0gY2Fyc1tpXTsKICAgICAgICAgICAgZGVsZXRlW10gY2FyczsKICAgICAgICAgICAgY2FycyA9IHRtcDsKICAgICAgICB9CiAgICAgICAgY2Fyc1tzaXplKytdID0gYzsKICAgIH0KICAgIENhciBwb3AoKQogICAgewogICAgICAgIGlmIChzaXplID09IDApIHRocm93IHJ1bnRpbWVfZXJyb3IoIlN0YWNrIGlzIGVtcHR5Iik7CiAgICAgICAgcmV0dXJuIGNhcnNbLS1zaXplXTsKICAgIH0KcHJpdmF0ZToKICAgIGludCBzaXplLCBjYXBhY2l0eTsKICAgIENhciAqY2FyczsKfTsKCmludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQp7CiAgICBzdGFjayBzdDsKICAgIHN0LnB1c2gocmVhZCgpKTsKICAgIHN0LnBvcCgpLnByaW50KCk7CiAgICBzdC5wdXNoKHJlYWQoKSk7CiAgICBzdC5wdXNoKHJlYWQoKSk7CiAgICBzdC5wb3AoKS5wcmludCgpOwogICAgc3QucG9wKCkucHJpbnQoKTsKfQo=
Введите марку машины:
Введите цвет машины:
Введите адрес:
Введите цену:
1, цвет: 1, цена: 1 адрес: 1
Введите марку машины:
Введите цвет машины:
Введите адрес:
Введите цену:
Введите марку машины:
Введите цвет машины:
Введите адрес:
Введите цену:
3, цвет: 3, цена: 3 адрес: 3
2, цвет: 2, цена: 2 адрес: 2