Advertisement
MaratPetrov

Untitled

Jan 27th, 2023 (edited)
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.37 KB | None | 0 0
  1. #pragma once
  2. #include <iostream>
  3. #include <string>
  4. #include <string.h>
  5. #include <stdlib.h>
  6. #include <vector>
  7. using namespace std;
  8.  
  9. namespace{
  10. const char* def_marka = "Renault";
  11. const int def_power = 150;
  12. float const def_price = 15.15;
  13. const int def_displacement = 1830;
  14. }
  15.  
  16. class Car{
  17.     private:
  18.         const char* marka; //марка авто
  19.         int power; //мощность двигателя в кВт
  20.         float cost; //стоимость в тыс. $
  21.         int displacement; //объём двигателя
  22.     public:
  23.         Car& operator= (const Car& newCar);
  24.         operator double () {
  25.         return this->cost;
  26.     }
  27.         void setMarka(const char* m);
  28.         //следующие методы записи возвращают false, чтобы прервать цикл ввода
  29.         bool setPower(int pw); //метод записи мощности
  30.         bool setCost(float p); //метод записи стоимости
  31.         bool setDis(int dis); //метод записи объём двигателя
  32.         std::string getMarka() const { //метод чтения поля марка
  33.             return marka;
  34.         }
  35.         ~Car();
  36.         Car(const char* m = def_marka, int pw = def_power, float p = def_price, int dis = def_displacement);
  37.         //Car(const char* m, int pw, float p, int dis);
  38.         void Print() const;
  39.  
  40. void Car::setMarka(const char* m){ //метод записи марки
  41.             marka = m;
  42.         }
  43.  
  44. bool Car::setPower(int pw){ //метод записи мощности
  45.             if (pw > 0 ){
  46.             power = pw;
  47.             return false;
  48.             }
  49.             else{
  50.                 return true;
  51.             }
  52.         }
  53.  
  54. bool Car::setCost(float p){ //метод записи стоимости
  55.             if (p > 0 ){
  56.             cost = p;
  57.             return false;
  58.             }
  59.             else{
  60.                 return true;
  61.             }
  62.         }
  63.  
  64. bool Car::setDis(int dis){ //метод записи объём двигателя
  65.             if (dis > 0 ){
  66.             displacement = dis;
  67.             return false;
  68.             }
  69.             else{
  70.                 return true;
  71.             }
  72.         }
  73.  
  74. Car::~Car(){
  75. std::cout << "Destructor called for Car of mark " << getMarka() << std::endl;
  76. }
  77.  
  78. void Car::Print() const{ //вывод параметров на экран
  79.             cout << "Marka is " << getMarka() << endl;
  80.             cout << "Price equals " << getCost() << " thousand $" << endl;
  81.             cout << "Power equals " << getPower() << " kW" << endl;
  82.             cout << "Displacement equals " << getDis() << " cm3" << endl;
  83.         }
  84.  
  85. Car::Car(const char* m, int pw, float p, int dis){
  86.         marka = m;
  87.         power = pw;
  88.         cost = p;
  89.         displacement = dis;
  90. }
  91.  
  92. Car& Car::operator= (const Car& newCar)
  93. {
  94.     // do the copy
  95.     //setMarka(new_car.marka);
  96.     //setPower(new_car.power);
  97.     //setCost(new_car.cost);
  98.     //setDis(new_car.displacement);
  99.     marka = newCar.marka;
  100.     power = newCar.power;
  101.     cost = newCar.cost;
  102.     displacement = newCar.displacement;
  103.  
  104.     // return the existing object so we can chain this operator
  105.     return *this;
  106. }
  107.  
  108. class Group{
  109.     public:
  110.         int size;
  111.         //Car* array;
  112.         vector <Car> array;
  113.     public:
  114.         //void PutCar(int i, Car& trans);
  115.         void PutCar(Car& trans);
  116.         Car& GetCar(int i){
  117.             //return array[i];
  118.             return array.at(i);
  119.         }
  120.         ~Group();
  121.     public:
  122.         Group(int size){ //конструктор по умолчанию
  123.             size = size;
  124.             //array = new Car[size];
  125.             //std::vector<Car>array;
  126.             //array = vector<Car> array;
  127.         };
  128.         Car& Group::operator[](int i){
  129.             //return array[i];
  130.             return array.at(i);
  131.         }
  132.         int Size();
  133.         void Print();
  134. };
  135.  
  136. int Group::Size(){
  137.     return size;
  138. };
  139.  
  140. void Group::Print(){
  141.     for (int i = 0; i<size; i++){
  142.         //Car one = array.at(i);
  143.         //array[i].Print();
  144.         //one.Print();
  145.         array.at(1).Print();
  146.     }
  147.     //array[0].Print();
  148. };
  149.  
  150. //void Group::PutCar(int i, Car& trans){
  151. void Group::PutCar(Car& trans){
  152.             //array[i] = trans;
  153.             array.push_back(trans);
  154.             //std::vector<Car> arr;
  155.         }
  156.  
  157. Group::~Group(){
  158.     //delete array;
  159.     array.clear();
  160.     std::cout << "Destructor called for Group of size " << Size() << std::endl;
  161. }
  162.  
  163. int main(){
  164.     //Car* new_car = new Car();
  165.     char marks[3][5] = {"Audi","BMW","Ford"};
  166.     int powers[3] = {100,110,120};
  167.     float costs[3] = {16.5,18,19.2};
  168.     int displaces[3] = {1800,1900,1980};
  169.     Group group(3);
  170.     for (auto i = 0; i < 3; i++){
  171.         Car new_car(marks[i],powers[i],costs[i],displaces[i]);
  172.         //Car new_car(marks[i],powers[i],costs[i],displaces[i]);
  173.         //Car *new_car = new Car(marks[i],powers[i],costs[i],displaces[i]);
  174.         //group.PutCar(i,new_car);
  175.         group.PutCar(new_car);
  176.         //delete new_car;
  177.     }
  178.     system("pause");
  179. return 0;
  180. }
Tags: C++
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement