@Russlik

Как решить эту задачу?

Помогите решить эту задачу.

Уже два дня мучаюсь.
Вот что у меня получилось сделать

function fillTank(fuelPrice, amount) {

  const totalPrice = fuelPrice * amount;

  if (this.money === 0) {
    return;
  }

  if (this.maxTankCapacity < this.vehicle.maxTankCapacity) {
     (this.maxTankCapacity / amount) * fuelPrice;
  }

  if (amount === undefined) {
      this.maxTankCapacity * amount;

      return this;
  }

  if (this.money < this.fuelPrice) {
    Math.random(this.amount - this.money);
  }

  if (this.money !== parseInt) {
    this.money = this.money - totalPrice;

    return this.money.toFixed(1);
  }

  if(amount < 2){
    return;
  }

}


/********************************************************/

Вот условия задачи и примеры

Royal Oil это сеть прогрессивных заправочных станций. Сегодня они хотят избавиться от рутинной работы и полностью автоматизировать все процессы. Нужно создать функцию fillTank, которая будет методом объекта customer. Метод будет принимать параметры: цену топлива fuelPrice за один литр, и количество литров amount, которую желает приобрести клиент. В объекте customer, обязательно будет поле money, это средства, которые есть у клиента, и поле vehicle - транспортное средство, в котором в свою очередь будут поля maxTankCapacity, и fuelRemains. Метод должен изменять объект customer, изменять баланс на счете клиента, и заливать нужное количество топлива в транспортное средство.

Пример:

const customer = {
  money: 30,
  vehicle: {
    maxTankCapacity: 20,
    fuelRemains: 8,
  },
  refuel: fillTank,
};

const fuelPrice = 2;
const amount = 3;

customer.refuel(fuelPrice, amount);

customer.money // 24
customer.vehicle.maxTankCapacity // 20
customer.vehicle.fuelRemains // 11

Функция должна учитывать следующие правила:

Если клиент желает приобрести больше топлива, чем вмещает бак его транспортного средства, залить ему полный бак топлива, и посчитать только стоимость залитого топлива.
Если клиент не знает сколько топлива ему нужно (параметр amount не передан), залить полный бак топлива.
Если у клиента мало средств на счету, залить топлива на сумму, которая есть у клиента, литры округляй, отбрасывая все до десятой части.
Если остаток на счете в клиента не целое число, отбрасывай все до десятой части.
Нельзя заправить меньше 2 литров топлива.
Hint: используй toFixed для отбрасывания дробной части. Не забудь перевести строку обратно в число.
  • Вопрос задан
  • 783 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Aidrei
function fillTank(){
let maxPurchase=this.money/this.fuelPrice; //сколько может купить
let realTankCapacity=this.maxTankCapacity-this.fuelRemains; // место в баке
/* и дальше проверяем хватает ли денег на 2 литра и более(отбивка не на нуле, потом проверяем вместится ли в бак более 2 литров и желание клиента должно быть более 2 литров

затем сравниваем три переменные - [1) возможности купить 2)место в баке 3) желание клиента] меньшая переменная это количество топлива которые мы зальём)*/
}

ps Можешь вычислить сначала три переменные, меньшую поместить в объём который надо залить, а потом проверить если этот объём если он меньше 2литров то отказать в заправке.
Ответ написан
Комментировать
@Russlik Автор вопроса
Вчера всё-таки решил эту задачу. Вот таким способом

Всем большое спасибо за помощь

function fillTank(fuelPrice, amount = this.vehicle.maxTankCapacity - this.vehicle.fuelRemains) {

let totalPrice = amount * fuelPrice;
let totalAmount = amount;

const customerMoney = +this.money.toFixed(1);

const maxAmount = this.vehicle.maxTankCapacity - this.vehicle.fuelRemains;

if(amount >= maxAmount){
totalAmount = maxAmount;
totalPrice = totalAmount * fuelPrice;
}

if(this.money < totalPrice){
totalAmount = customerMoney / fuelPrice;
totalPrice = totalAmount * fuelPrice;
}

if(totalAmount < 2){
totalAmount = 0;
totalPrice = 0;
}

this.money = +(customerMoney - totalPrice).toFixed(1);
this.vehicle.fuelRemains += +totalAmount.toFixed(1);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы