![]() |
|
Модераторы: bsa |
![]()
|
|
| Distinctively |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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); } |
|||
|
||||
| Distinctively |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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; } |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |