как рассчитать эту математику с помощью дартс? - PullRequest
0 голосов
/ 05 марта 2020

totalDirection = 1540 м

1-й КМ = 10

2-й КМ = 8

Другие (нормальные) КМ = 5

Как мне рассчитать этот лог c? Пользователи должны заплатить 10 долларов за 1 км, затем 2 нс км за 8 долларов, а за остальные 5 долларов. model.startUpCharge - массив, хранилище 10 $ и 8

/// [totalDistance] is in meters
double calculateTripPrice(RideModel model, double totalDistance) {
  double totalPrice = 0;
  double standardPrice = 0;

  totalPrice = model.normalCharge *
      ((totalDistance / 1000) - model.startUpCharge.length);
  for (var i = 0; i < model.startUpCharge.length; i++) {
    standardPrice = standardPrice + model.startUpCharge[i];
  }
  totalPrice = totalPrice + standardPrice;
  return totalPrice;
}

1540 млн. Логи c = 1000 млн. Долл. США 10 и 540 млн. Долл. США платят 8

@ creativecreatorormaybenot ответ

ответ должно быть 50, но результат равен 5.

Проблема заключается в следующем: если я добавлю 1 метр, цена должна быть 50. 1-й километр имеет начальный заряд. не меняется

import 'dart:math' as math;

class RideModel{
  final List startUpCharge;
  final double normalCharge;

  RideModel({this.startUpCharge,this.normalCharge});
}
main() {
 calculateTripPrice(RideModel(startUpCharge: [50,51],normalCharge: 10),1);
}

double calculateTripPrice(RideModel model, double totalDistance) {
  var remainingDistance = totalDistance, price = .0;

  // Kilometers with special charge
  for (var i = 0; i < model.startUpCharge.length; i++) {
    price += model.startUpCharge[i] / 1000 * math.min(1000, remainingDistance);
    remainingDistance -= math.min(1000, remainingDistance);
  }

  // Remaining kilometers
  price += model.normalCharge / 1000 * remainingDistance;
  remainingDistance = 0;
  print(price);

  return price;
}

1 Ответ

1 голос
/ 05 марта 2020

Вы можете просто итеративно прибавлять к своей цене и вычитать из расстояния. Исходя из этого, к цене будет добавлено, только когда еще есть расстояние, и каждый раз используется правильный коэффициент.

double calculateTripPrice(RideModel model, double totalDistance) {
  var remainingDistance = totalDistance, price = .0;

  // Kilometers with special charge
  for (var i = 0; i < model.startUpCharge.length; i++) {
    price += model.startUpCharge[i] / 1000 * math.min(1000, remainingDistance);
    remainingDistance -= math.min(1000, remainingDistance);
  }

  // Remaining kilometers
  price += 5 / 1000 * remainingDistance;
  remainingDistance = 0;

  return price;
}

Не забудьте import 'dart:math' as math;.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...