Стоимость проезда на такси Javascript

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

Вот то, что у меня есть до сих пор, но это плохо вычисляется.

Он продолжает давать мне $5

if( startZone == 1 && endZone == 1 ){ 
    totalTaxiFare = baseCharge;

    if( timeCovered > 0 && timeCovered <= 4 ){  
        baseCharge = 5.00;
        charge = (0.75/timeCovered)*timeCovered; 
        totalTaxiFare = baseCharge + charge; 
    }
}

if( startZone == 1 && endZone == 2 ){           
    totalTaxiFare = baseCharge;         
    if( timeCovered > 4 && timeCovered <= 10 ){
        baseCharge = 7.00;          
        charge =( 3.00 + (0.50 * ( timeCovered - 4 ) * ( 0.75 / timeCovered ) * timeCovered ) );
        totalTaxiFare = baseCharge + charge;        
    }
}

document.writeln("<p> The total taxi fare is $" + totalTaxiFare + "</p>");      

person Karel Poborski    schedule 07.02.2016    source источник
comment
Если время›0‹4, оплата 0,75 за минуту   -  person Karel Poborski    schedule 07.02.2016
comment
Если такси отправляется в точке ›0, но в точке ‹4, плата составляет 0,75 за минуту с базовой платой в размере 5 долларов США.   -  person Karel Poborski    schedule 07.02.2016
comment
Если вы считаете, что это должно скорее дать вам 5.75   -  person Nikolay Ermakov    schedule 07.02.2016


Ответы (1)


Хорошо, я не знаю, правильно ли я понял математику, так как мне нужно было угадать, каковы были ставки, глядя на шаблон. Есть эта зона, я не уверен, что это такое, но, глядя в исходный код, я думаю, что это условное изменение расчетов для работы в 2 смены?

В любом случае, вы всегда должны использовать var для своих переменных, иначе все эти данные плавают в глобальном пространстве. У вас было такое выражение: totalTaxiFare = baseCharge; парить вокруг, будучи выставленным напоказ. Таким образом, похоже, что в конечном итоге ваш totalTaxiFare постоянно менялся на baseCharge, который имеет постоянное значение 5,00. Если бы вы использовали var и оставили большинство ваших переменных локальными, вы, вероятно, получили бы другие результаты, но с выражениями, которые у вас были, эти результаты не были бы точными.

Я определенно не гений математики (ленивый в старшей школе), но может ли это выражение привести к подходящему результату для оплаты проезда на такси?: `

(0.75/timeCovered)*timeCovered; 

Хорошо, скобки сначала и мы скажем 3 минуты? 3 часа? 3 единицы времени, я думаю.

(.75/3)*3 что (.25)*3 что .75 так что это было изменено на более подходящее выражение:

(.75)*timeCovered;

Так что это было бы

(.75)*3 = 2.25

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

Вот DEMO, как я уже говорил, я догадался, что к тому, как выполняются выражения, потому что вы не предоставили полные ставки или не предоставили какие-либо подробности вовремя. Вроде работает, надо попробовать. Удачи, сэр ;-)

person zer00ne    schedule 07.02.2016
comment
Спасибо Zer00ne, подсказки и демонстрация были очень полезны. Получил это прямо. Тебя ценят. Спасибо, - person Karel Poborski; 07.02.2016
comment
@KarelPoborski Пожалуйста, нажмите зеленую галочку, если этот ответ помог решить вашу проблему. :-) - person zer00ne; 07.02.2016