В чём ошибка при подсчёте времени

101
25 ноября 2021, 12:30

Нужно было создать обьект описывающий машину , а затем вычислить время за которое эта машина проедет переданное расстояние , с учётом того ,что через каждые 4 часа водителю нужен час отдыха. Но почему то не всегда показывает нужное значение. К примеру в этом случае он должен преодолеть расстояние за 12 часов, но показывает 14

function Car(producer, model, issueYear, averageSpeed) { 
  this.producer = producer; 
  this.model = model; 
  this.issueYear = issueYear; 
  this.averageSpeed = averageSpeed; 
 
  this.timeDistance = function(distance) { 
    let time = distance / this.averageSpeed; 
    for (let i = 0; i < time; i++) { 
      if (i % 4 == 0) { 
        time++; 
      } 
    } 
    console.log(time); 
  }; 
} 
let firstCar = new Car('Ferrari', 'F12', 2000, 40); 
firstCar.timeDistance(400);

Answer 1

Каждые полные четыре часа, кроме последних, добавляют час времени.

Нам нужно найти количество полных четверок и добавить столько часов. За исключением случая, когда изначальное время кратно 4

function Car(producer, model, issueYear, averageSpeed) { 
  this.producer = producer; 
  this.model = model; 
  this.issueYear = issueYear; 
  this.averageSpeed = averageSpeed; 
 
  this.timeDistance = function(distance) { 
    let time = distance / this.averageSpeed; 
    let delta = Math.floor(time / 4); 
    if (Math.abs(delta * 4 - time) < 1E-6) 
      delta--; 
    time += delta; 
    return time; 
  }; 
} 
 
let firstCar = new Car('Ferrari', 'F12', 2000, 40); 
const time = firstCar.timeDistance(400); 
console.log(time);

Answer 2

Объяснения в комментариях даны

function Car(producer, model, issueYear, averageSpeed) { 
  this.producer = producer; 
  this.model = model; 
  this.issueYear = issueYear; 
  this.averageSpeed = averageSpeed; 
 
  this.timeDistance = function(distance) { 
    let time = distance / this.averageSpeed; 
    time += Math.ceil(time/4)-1; 
    return time; 
  }; 
} 
 
let firstCar = new Car('Ferrari', 'F12', 2000, 40); 
console.log(firstCar.timeDistance(400)); 
console.log(firstCar.timeDistance(160)); 
console.log(firstCar.timeDistance(161));

READ ALSO
Как убрать все переносы строк с помощью RegEx?

Как убрать все переносы строк с помощью RegEx?

Как можно выбрать все переносы строк и заменить их пустой строкой? Пытался сделать так:

214
Не работает загрузка doc файла в safari

Не работает загрузка doc файла в safari

Загрузка не работает только в safari - http://bravegk-russiaru/?page_id=2

179
pyython, django

pyython, django

есть три модели каждая зависит от следующейподскажите как выводить данные последовательно на 1 странице данные с country при переходе по ссылке...

177
Почему бизнес-логика имеет название &quot;бизнес&quot;?

Почему бизнес-логика имеет название "бизнес"?

Почему бизнес-логика имеет название "бизнес"?

102