Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помошь с классами. Нужно описать 2 функции :drive,fill_gas 
:(
    Опции темы
Distinctively
Дата 5.11.2017, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.11.2017

Репутация: нет
Всего: нет




У нас есть класс. который описывает машины. Из важных свойств есть 
engine_vol - обьем двигателя в литрах
tanl_vol - обьем бензобака в литрах
curent_gas_vol - какой обьем бензина в баке сейчас
odometer - пробег машины в км.

У машины есть 2 функции
drive(float km)
и
fill_gas(float liters)

функция fill_gas() заполняляет безнобак машины (m_curent_gas_vol), но не больше, чем есть в константе m_tanl_vol.
функция drive - если есть топливо, то машина едет столько км, сколько указано в параметре. при этом odometer - всегда увеличивается, когда машина едет.

Расход топлива на 100 км у наших машин считается так:  обьем двигателя*5, тоесть если у машины 2 литра двигатель, то на 100 км она потратити 2*5=10 литров топлива.

Если мы хотим проехать больше, чем есть в баке, то функция drive должна вернуть, скольк же КМ машина проехала прежде чем встала от того, что бак пустой.

Пример:

Создаем машину с двигателем 2 литра и объемом бака в 100 литров
    All_Cars car (2,100);
    car.print();
    В машине вначел нет топлива
    float trip_distance;
    trip_distance = car.drive(100);
    в trip_distance получится 0, потому что нет топлива
    
    car.fill_gas(5);
    car.print();
    Залили 5 литров, curent_gas_vol сейчас 5
    trip_distance = car.drive(100);
    в trip_distance получится 50, потому что на 5 литров можно проехать 50 км. в баке опять нет топлива
    Одометр показывает 50 км
    car.print(); 
    
    car.fill_gas(20);
    Залили 20 литров, curent_gas_vol сейчас 20
    trip_distance = car.drive(100);
    в trip_distance получится 100, потому что на 20 литров можно проехать 200 км. в баке осталось топлива 10 литров
    Одометр показывает 150 км
    car.print(); 
    
    car.fill_gas(50);    
    Залили 50 литров, curent_gas_vol сейчас 60
    trip_distance = car.drive(100);
    в trip_distance получится 100, потому что на 60 литров можно проехать 600 км. в баке осталось топлива 50 литров
    Одометр показывает 250 км
    car.print(); 
    
    car.fill_gas(70);    
    Пробуем залить 70 литров, но 50 уже было, так что curent_gas_vol сейчас 100
    trip_distance = car.drive(1200);
    в trip_distance получится 1000, потому что на полный бак можно проехать 1000 км. в баке осталось топлива 0 литров
    Одометр показывает 1250 км
    car.print(); 
    
    

class All_Cars
{
    float m_engine_vol = 1.9;     // engine volume in liters, cannot be change
    float m_tanl_vol = 40.0;      // car tank volume for gas in liters, cannot be change
    float m_curent_gas_vol = 0.0; // in liters, shall modify during fill and drive
    float m_odometer =  0.0;      // in km, shall modify during drive

public:
    All_Cars() {
        cout << "new car with default setting was created\n";
        print();
    }
    All_Cars(float engine_vol, float tanl_vol) {
        m_engine_vol = engine_vol;
        m_tanl_vol = tanl_vol;
        cout << "new car with custom setting was created\n";
        print();
    }

    void fill_gas(float liters) {
    }

    float drive(float km) {
        return 0;
    }

    void print(){
        cout << "this car have engine vol " << m_engine_vol<<
                " and in tank now is " << m_curent_gas_vol <<
                " from total "<< m_tanl_vol<<" liters " <<
                "odometer shows " << m_odometer << " km \n";
    }
};

int main()
{
    All_Cars my_car;
    All_Cars some_car(2.3,60);
    cout << "Print out info about All Cars\n";
    my_car.print();
    some_car.print();
    
    All_Cars car (2,100);
    car.print();
    float trip_distance;
    trip_distance = car.drive(100);
    
    car.fill_gas(5);
    car.print();
    trip_distance = car.drive(100);
    
    car.fill_gas(20);
    car.print();
    trip_distance = car.drive(100);   
}    
PM MAIL   Вверх
Distinctively
Дата 8.11.2017, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.11.2017

Репутация: нет
Всего: нет



Спасибо за помощь!



float curent_gas_vol;
float tanl_vol;
float engine_vol;

void fill_gas(float liters) {
    curent_gas_vol +=liters;
    if(curent_gas_vol > tanl_vol )    {
        curent_gas_vol = tanl_vol;        
    }
    cout << "fill_gas(float liters)\n";
}


float drive(float km) {
    float liters_used =0;
    liters_used =(km/engine_vol);
    curent_gas_vol=curent_gas_vol-liters_used;
    cout << "drive(float km)\n";    
}

About "fill_gas"​ I think it is better to first check tank volume, and then only add fuel:
    if (curent_gas_vol+liters >= tanl_vol){ // can't fit to tank
        curent_gas_vol = tanl_vol;
    }else {                                 // add fuel to tank
        curent_gas_vol +=liters;
    }
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0418 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.