Loading...
Mihail_Atnsv avatar Mihail_Atnsv 0 Точки

Transport price/Цена за транспорт

Здравейте,

17.*Цена за транспорт

Втора задача от междинния изпит на 6 март 2016. Тествайте решението си тук.

Студент трябва да пропътува n километра. Той има избор измежду три вида транспорт:

  • Такси. Начална такса: 0.70 лв. Дневна тарифа: 0.79 лв. / км. Нощна тарифа: 0.90 лв. / км.
  • Автобус. Дневна / нощна тарифа: 0.09 лв. / км. Може да се използва за разстояния минимум 20 км.
  • Влак. Дневна / нощна тарифа: 0.06 лв. / км. Може да се използва за разстояния минимум 100 км.

Напишете програма, която чете броя километри n и период от деня (ден или нощ), въведени от потребителя, и изчислява цената на най-евтиния транспорт.

Вход

Програмата чете два реда(аргумента):

  • Първият ред(аргумент) съдържа числото n – брой километри – цяло число в интервала [1…5000].
  • Вторият ред(аргумент) съдържа дума “day” или “night” – пътуване през деня или през нощта.

Изход

Да се отпечата на конзолата най-ниската цена за посочения брой километри. Резултатът да се форматира до втория знак след десетичната запетая.

Примерен вход и изход:

Вход

Изход

Обяснения

5

day

4.65

Разстоянието е под 20 км à може да се ползва само такси. Началната такса е 0.70 лв. Понеже е през деня, тарифата е 0.79 лв. / км. С такси цената е: 0.70 + 5 * 0.79 = 4.65 лв.

7

night

7.00

Разстоянието е под 20 км à може да се ползва само такси. Началната такса е 0.70 лв. Понеже е през нощта, тарифата е 0.90 лв. / км. С такси цената е: 0.70 + 7 * 0.90 = 7.00 лв.

25

day

2.25

Разстоянието е над 20 км à може да се ползва автобус, но не може да се ползва влак. Автобусът е най-евтиния възможен вариант. С автобус цената е: 25 * 0.09 = 2.25 лв.

180

night

10.80

Разстоянието е над 100 км à може да се ползва влак. Влакът е най-евтиният възможен вариант за пътуване. С влак цената е: 180 * 0.06 = 10.80 лв.

Това е моето решение но в системата ми дава 83/100. Някой има ли идеи защо? Може би подхода трябва да е друг?

function transportPrice([n, input]) {

n = Number(n);

bus = n * 0.09;

train = Math.max(n * 0.06).toFixed(2);

taxiDay = ((n * 0.79) + 0.70);

taxiNight = ((n * 0.90) + 0.70);

if(n < 20 && input == "day") {

console.log(taxiDay);

} else if(n < 20 && input == "night") {

console.log(taxiNight)

} else if(n > 20 && n < 100) {

console.log(bus);

} else {n > 100

console.log(train);

}

}

 

transportPrice([5, "day"]);

transportPrice([7, "night"]);

transportPrice([25, "day"]);

transportPrice([180, "night"]);

Тагове:
0
Programming Basics
mustafa_q1 avatar mustafa_q1 44 Точки

Провавй със <=  и >=. Иначе ето и моето решение: https://pastebin.com/W9teRWxN

0
Mihail_Atnsv avatar Mihail_Atnsv 0 Точки

Благодаря ви точно там явно беше проблема и сега всичко е ок благодаря още веднъж 100/100.

0
kr056 avatar kr056 64 Точки

Минимум 20,означава включително 20 т.е else if(n >= 20 && n < 100),и минава 100/100.

Може и да направиш само една променлива,и спрямо if-a да смяташ  дадения транспорт вместо да смяташ всички възможни,така и ще се форматира само един път.

 

0
Mihail_Atnsv avatar Mihail_Atnsv 0 Точки

Благодаря, ще го напиша и така както казахте наистина доста по кратък и удобен вариант. :)

0
dimiOrange avatar dimiOrange 63 Точки

Здравей,

Аз не разбирам този ред train = Math.max(n * 0.06).toFixed(2);. Може би това е причината. Аз бих го направил train = n * 0.06;.

Ако някой желае, ето и моето решение с Java.

Поздрави

 

import java.util.Scanner;

public class TravelCost {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        int n = Integer.parseInt(console.nextLine());
        String dayOrNight = console.nextLine();

        double cheapestTravelCost = 0;

        double taxiTravelCost = 0.70;
        if (dayOrNight.equals("day")) {
            taxiTravelCost += n * 0.79;
        } else {
            taxiTravelCost += n * 0.90;
        }

        double busTravelCost = n * 0.09;
        double trainTravelCost = n * 0.06;

        if (n < 20) {
            cheapestTravelCost = taxiTravelCost;
        } else if (n >= 20 && n < 100) {
            cheapestTravelCost = busTravelCost;
        } else {
            cheapestTravelCost = trainTravelCost;
        }

        System.out.printf("%.2f", cheapestTravelCost);
    }
}

0
Mihail_Atnsv avatar Mihail_Atnsv 0 Точки

Да, 

Бях я сложил понеже ми даваше отговор 10,79 вместо 10,80 но сега след като оправих кода го махнах и  както се казва в една популярна напоследък песен "Всичко е точно" :-) 

0
25/02/2018 11:00:44
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.