Loading...
st.penchev avatar st.penchev 3 Точки

Задача 3 Куриери от изпита от днес - 05.11.2017, Java Basics.

Тъй като изпита вече свърши, бих помолил за помощ някой да ми обясни защо judge ми дава 91/100 на 3-та задача.

Чупи се само тест 7. Въртях суках... все 91. Не мога да видя input-a и верния изход по разбираеми причини. Но за себе си бих искал да си изясня.

Ето кода:

import java.util.Scanner;

public class Courier {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        double weight = Double.parseDouble(scanner.nextLine());
        String type = scanner.nextLine();
        int distance = Integer.parseInt(scanner.nextLine());

        double priceKm=0;
        int nadcenka=0;

        if ("standard".equals(type)){
            if (weight<=1){
                priceKm=3;
            } else if (weight<=10){
                priceKm=5;

            } else if (weight<=40){
                priceKm=10;
            } else if (weight<=90){
                priceKm=15;
            } else if (weight<=150){
                priceKm=20;
            }


        }
        else if ("express".equals(type)){

            if (weight<=1){
                priceKm=(3.0 + (80*weight*3/100));
            } else if (weight<=10){
                priceKm=(5.0 + (40*weight*5/100));

            } else if (weight<=40){
                priceKm=(10.0 + (5*weight*10/100));
            } else if (weight<=90){
                priceKm=(15.0+(2.0*15*weight/100));
            } else if (weight<=150){
                priceKm=(20.0 + (1.0*weight*20/100));
            }

        }

        //System.out.println(priceKm);
        System.out.printf("The delivery of your shipment with weight of %.3f kg. would cost %.2f lv.", weight, distance*0.01*priceKm);
    }
}
 

Тагове:
0
Programming Basics
sun_seeker avatar sun_seeker 15 Точки

При мен, на C++, имаше същият проблем. Махнах "=" при "express" и получих 100/100.

Още в началото попитах какво правим при граничните случай, примерно за 10.5 кг. но ми отговориха, че най-вероятно няма да участват при проверките. Е, явно са участвали :) 

0
XuTkO avatar XuTkO 2 Точки

Май проблема е, че не си използвал 0.05 за 5 стотинки например, а 5 и после си разделил на 100. При мен като оправих това и мина на 100

0
st.penchev avatar st.penchev 3 Точки

Интересно... не би трябвало да има разлика ?

0
Kristian8606 avatar Kristian8606 42 Точки
distance*0.01*priceKm по този начин ги конвертира и няма проблем 

проблема е if (weight<=1){ 

трябва да е if (weight<1){ без равното

0
Kristian8606 avatar Kristian8606 42 Точки

тук ти е проблем 

if ("standard".equals(type)){
    if (weight<=1){

трябва да е if (weight < 1){

при вход 

 1
standard
100

 

твоя изход е  3.00 лева. а трябва да е 5.00лв защото при 1кг. тарифата е 100км. * 0.05ст. = 5лв.

в твоя случаи умножава по 0.03ст. 

ето моя код дава 100/100  https://pastebin.com/72utzU1T 

малко е нечетлив понеже бързах и слагах глупави имена на променливи а също и променливата sum дори не я използвах .

общо взето мазало но работи.

 

 

0
st.penchev avatar st.penchev 3 Точки

Не е това... първо с < пробвах. Пак гръмна 7-ми тест.

След това смених с <=.... пак същотото...

Писах и аз... мазах на таз задача... над 1 час... и все 91/100...

???

0
st.penchev avatar st.penchev 3 Точки

А някой да има условията ? Че в judge не са достъпни вече?

0
st.penchev avatar st.penchev 3 Точки

Разгледах решението ти. Хубаво, но какво правим за граничните тегла - между 10 и 11, 40 и 41 и прочие....? Не мисля че трябва да бъдат изключени.

Освен това доколкото си спомням надценката беше на килограм.

0
05/11/2017 16:43:32
Kristian8606 avatar Kristian8606 42 Точки

в judge явно няма тест с 10.5 , 40.5  и 90.5 затова не ми е гръмнало  иначе опитах вход с 10.5 и изкарва нула лева 

корегирах задачата да обхваща и  вход 10.5 и влиза при 0.10ст. на километър което при вход 10.5 standart , 100км. =  0.10ст. * 100км. = 10лв.

но ако погледнеш решението си при входа които ти бях дал  

вход

1
standard
100

твоя изход е 3 лв. а в условието пише при 1кг. цената е 0.05ст. * 100км. = 5 лева 

а твоя изход е 3 лв.  значи проблема ти би трябвало да е там if (weight <=1){

напиши го if (weight < 1){ без равно за да входа с 1кг standart , 100km да е вярно

0
Kristian8606 avatar Kristian8606 42 Точки
  • За пратки по - леки от 1000 гр. – 3 стотинки на километър. /  ти си казал при оп малко или равно на 1кг if ("standard".equals(type)){
                if (weight<=1){
                    priceKm=3;

  • и го смята по 0.03ст.

  • а трябва да е така     if ("standard".equals(type)){

  •                                          if (weight < 1){

  •                                            priceKm=3;

  • за да го смята по 0.05ст.

  • От 1 кг до 10 кг – 5 стотинки на километър.

  • тоест премахни равното

0
05/11/2017 17:47:51
st.penchev avatar st.penchev 3 Точки

Както вече казах, judge гърми същия тест и без равно. Ето ми submit-a без равно и пак е 91 точки :

import java.util.Scanner;

public class Courier {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        double weight = Double.parseDouble(scanner.nextLine());
        String type = scanner.nextLine();
        int distance = Integer.parseInt(scanner.nextLine());

        double priceKm=0;
        int nadcenka=0;

        if ("standard".equals(type)){
            if (weight<1){
                priceKm=3;
            } else if (weight<=10){
                priceKm=5;

            } else if (weight<=40){
                priceKm=10;
            } else if (weight<=90){
                priceKm=15;
            } else if (weight<=150){
                priceKm=20;
            }


        }
        else if ("express".equals(type)){

            if (weight<1){
                priceKm=(3.0 + 80*weight*3/100);
            } else if (weight<=10){
                priceKm=(5.0 + 40*weight*5/100);

            } else if (weight<=40){
                priceKm=(10.0 + 5*weight*10/100);
            } else if (weight<=90){
                priceKm=(15.0+(2.0*15*weight/100));
            } else if (weight<=150){
                priceKm=(20 + 1*weight*20/100);
            }

        }

        //System.out.println(priceKm);
        System.out.printf("The delivery of your shipment with weight of %.3f kg. would cost %.2f lv.", weight, distance*0.01*priceKm);
    }
}
 

0
st.penchev avatar st.penchev 3 Точки

Прави ми впечатление че както и при примерния вход/изход, така и в решенията ви смятате надценката отделно, и след това я добавяте към цената на транспорта. Докато аз смятам цена на км с включената надцена, и след това умножавам по дистанцията... може би тук при сметките нещо дребно се разминава при компилирането, макар че не би трябвало да има разлика ? 

0
MarioPetrov02 avatar MarioPetrov02 2 Точки

Ето тук: https://pastebin.com/0sdjJGxn е моето решение на С++. Дава 100/100. Прегледай проверките, може би там ти е грашката :)

0
Kristian8606 avatar Kristian8606 42 Точки

Може би има и друга грешка и е възможно да е при пресмятането но без тестове и без джъдж няма как да провериме освен да си измисляме тестове и да гледаме дали ги пресмята правилно защото теста които пуснах с 1 кг. Standard, 100 km. не минава 

ще чакаме изпита да стане публичен и ще видиме

0
Abaddon avatar Abaddon 1 Точки

https://pastebin.com/X0VNQu2W - това е моя код 100/100 но за C# , първоначално и мен ме дънеше само един тест първата ми проверка беше " теглото >= 0.01 и <= 0.99 ", като го преправих >= 0 даде 100 от 100. Аналогично и другите проверки  до 10.99 - 40.99 - 90.99

Поздрави

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