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

помощ за задача Trade comissions - Java

Зравейте, моля за помощ и съвет, относно решението на задачата. Не мога да си открия грешката. Правих всякакви промени и не излиза.

Ето го условието:

Фирма дава следните комисионни на търговците си според града, в който работят и обема на продажбите s:

Град

0 ≤ s ≤ 500

500 < s ≤ 1 000

1 000 < s ≤ 10 000

s > 10 000

Sofia

5%

7%

8%

12%

Varna

4.5%

7.5%

10%

13%

Plovdiv

5.5%

8%

12%

14.5%

Напишете конзолна програма, която чете име на град (стринг) и обем на продажби (десетично число) , въведени от потребителя, и изчислява и извежда размера на търговската комисионна според горната таблица. Резултатът да се изведе закръглен с 2 цифри след десетичната точка. При невалиден град или обем на продажбите (отрицателно число) да се отпечата „error“. Примери:

вход

изход

 

вход

изход

 

вход

изход

 

вход

изход

Sofia

1500

120.00

Plovdiv

499.99

27.50

Varna

3874.50

387.45

Kaspichan

-50

error

 Ето го и моето решение:

import java.util.Scanner;

public class TradeComissions {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        String town = console.nextLine().toLowerCase();
        double sales = Double.parseDouble(console.nextLine());
        double comission = 0;

        if (town.equals("Sofia")) {
            if (sales >= 0 && sales <=500) {
                comission = 0.05 * sales;
            } else if (sales > 500 && sales <= 1000) {
                comission = 0.07 * sales;
            } else if (sales > 1000 && sales <= 10000) {
                comission = 0.08 * sales;
            } else if (sales > 10000) {
                comission = 0.12 * sales;
            }else {
                System.out.println("error");
            }
        } else if (town.equals("Varna")) {
            if (sales >= 0 && sales <= 500) {
                comission = 0.045 * sales;
            } else if (sales > 500 && sales <= 1000) {
                comission = 0.075 * sales;
            } else if (sales <= 10000) {
                comission = 0.1 * sales;
            } else if (sales > 10000) {
                comission = 0.13 * sales;
            }else {
                System.out.println("error");
            }

        }else if (town.equals("Plovdiv")) {
            if (sales >= 0 && sales <= 500) {
                comission = 0.055 * sales;
            } else if (sales <= 1000) {
                comission = 0.08 * sales;
            } else if (sales <= 10000) {
                comission = 0.12 * sales;
            } else if (sales > 10000) {
                comission = 0.145 * sales;
            }else {
                System.out.println("error");
            }

        }else {
            System.out.println("error");
        }

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


        }

    }



 

Тагове:
0
Programming Basics
Attanasov avatar Attanasov 17 Точки
package ComplexConditions;

import java.util.Scanner;

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

        String town = scanner.nextLine().toLowerCase();
        double sells = Double.parseDouble(scanner.nextLine());

        double comission = 0;

        if (sells >= 0 && sells <= 500) {
            if (town.equals("sofia")) {
                System.out.printf("%.2f", sells * 0.05);
            } else if (town.equals("varna")) {
                System.out.printf("%.2f", sells * 0.045);
            } else if (town.equals("plovdiv")){
                System.out.printf("%.2f", sells * 0.055);
            } else {
                System.out.println("Error");
            }
        } else if (sells > 500 && sells <= 1000) {
            if (town.equals("sofia")){
                System.out.printf("%.2f", sells * 0.07);
            } else if (town.equals("varna")){
                System.out.printf("%.2f", sells * 0.075);
            } else if (town.equals("plovdiv")){
                System.out.printf("%.2f", sells * 0.08);
            } else {
                System.out.println("Error");
            }
        } else if (sells > 1000 && sells <= 10000) {
            if (town.equals("sofia")) {
                System.out.printf("%.2f", sells * 0.08);
            } else if (town.equals("varna")){
                System.out.printf("%.2f", sells * 0.10);
            } else if (town.equals("plovdiv")) {
                System.out.printf("%.2f", sells * 0.12);
            } else {
                System.out.println("Error");
            }
        } else if (sells > 10000) {
            if (town.equals("sofia")) {
                System.out.printf("%.2f", sells * 0.12);
            }
            else if (town.equals("varna")) {
                System.out.printf("%.2f", sells * 0.13);
            }
            else if (town.equals("plovdiv")) {
                System.out.printf("%.2f", sells * 0.145);
            } else {
                System.out.println("Error");
            }
        } else {
            System.out.println("error");
        }
    }
}

Аз съм я решил по този начин. Дано съм бил полезен :) 

0
Emilenkova avatar Emilenkova 0 Точки

Благодаря. Аз междувременно направих корекции и проверките са ми верни. Judge обаче ми даа 94 точки и грешка при Пловдив. Наистина не мога да открия тази грешка...

ето го новото ми решение:

import java.util.Scanner;

public class TradeComissions {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        String town = console.nextLine().toLowerCase();
        double sales = Double.parseDouble(console.nextLine());
        double comission = 0;

        if (town.equals("sofia")) {
            if (sales >= 0 && sales <=500) {
                comission = 0.05 * sales;
            } else if (sales > 500 && sales <= 1000) {
                comission = 0.07 * sales;
            } else if (sales > 1000 && sales <= 10000) {
                comission = 0.08 * sales;
            } else if (sales > 10000) {
                comission = 0.12 * sales;
            } else if (sales < 0) {
                System.out.println("error");
            }
        } else if (town.equals("varna")) {
            if (sales >= 0 && sales <= 500) {
                comission = 0.045 * sales;
            } else if (sales > 500 && sales <= 1000) {
                comission = 0.075 * sales;
            } else if (sales <= 10000) {
                comission = 0.1 * sales;
            } else if (sales > 10000) {
                comission = 0.13 * sales;
            } else if (sales < 0) {
                System.out.println("error");
            }

        }else if (town.equals("plovdiv")) {
            if (sales >= 0 && sales <= 500) {
                comission = 0.055 * sales;
            } else if (sales <= 1000) {
                comission = 0.08 * sales;
            } else if (sales <= 10000) {
                comission = 0.12 * sales;
            } else if (sales > 10000) {
                comission = 0.145 * sales;
            }else if (sales < 0){
                System.out.println("error");
            }

        }else {
            System.out.println("error");
        }

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


        }

    }



0
denis.argatski avatar denis.argatski 25 Точки

мога да предложа решението на C# първоначално не бях проверил когато комисионата ми  е отрицателна и judge ми даваше 94/100.После го оправи и ми даде 100/100 .

https://pastebin.com/XtPKgySF

0
Attanasov avatar Attanasov 17 Точки

На Пловдив, където ти е "sales > 10000" , умножи по 0.0145, а не по 0.145. Виж дали така ще се получи.

0
Emilenkova avatar Emilenkova 0 Точки

не, след тази корекция, дори ми ги намали на 88... 

0
Emilenkova avatar Emilenkova 0 Точки

аз съм направила проверка за комисиона, ако е <0, но пак ми дава 94. frown

0
LiliyaPetrova avatar LiliyaPetrova 0 Точки

Случая "error" го разгледай като две отделни if-проверки, едната да е за градовете и втората за продажбите и в двата случая дай Console.WriteLine("error");

0
Jack.black avatar Jack.black 3 Точки
mport java.util.Scanner;

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

            String town = scanner.nextLine();
            double sell = Double.parseDouble(scanner.nextLine());

            if ("Sofia".equalsIgnoreCase(town)) {
                if (sell >= 0 && sell <= 500) {
                    System.out.printf("%.2f", sell * 0.05);
                } else if (sell > 500 && sell <= 1000) {
                    System.out.printf("%.2f", sell * 0.07);
                } else if (sell > 1000 && sell <= 10000) {
                    System.out.printf("%.2f", sell * 0.08);
                } else if (sell > 10000) {
                    System.out.printf("%.2f", sell * 0.12);
                } else {
                    System.out.println("error");
                }
            } else if ("Varna".equalsIgnoreCase(town)) {
                if (sell >= 0 && sell <= 500) {
                    System.out.printf("%.2f", sell * 0.045);
                } else if (sell > 500 && sell <= 1000) {
                    System.out.printf("%.2f", sell * 0.075);
                } else if (sell > 1000 && sell <= 10000) {
                    System.out.printf("%.2f", sell * 0.10);
                } else if (sell > 10000) {
                    System.out.printf("%.2f", sell * 0.13);
                } else {
                    System.out.println("error");
                }
            } else if ("Plovdiv".equalsIgnoreCase(town)) {
                if (sell >= 0 && sell <= 500) {
                    System.out.printf("%.2f", sell * 0.055);
                } else if (sell > 500 && sell <= 1000) {
                    System.out.printf("%.2f", sell * 0.08);
                } else if (sell > 1000 && sell <= 10000) {
                    System.out.printf("%.2f", sell * 0.12);
                } else if (sell > 10000) {
                    System.out.printf("%.2f", sell * 0.145);
                } else {
                    System.out.println("error");
                }
            } else {
                System.out.println("error");
            }
        }
    }
0
Emilenkova avatar Emilenkova 0 Точки

Lilia Petrova, направих го, но продължава да ми дава 94 точки. 

Jack.black, практически не намирам разлика между твоето решение и моето, но не получавам 100 точки. Ако имаш идея къде в моето решение е грешката, моля за помощ. Благодаря!

 

0
mobretenova avatar mobretenova 1 Точки

Здравей,

Това е моето решение на Java, със знания от курса.

Judge ми даде 100/100 от първия път без корекции:

import java.util.Scanner;

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

        String town = console.nextLine();
        Double sales = Double.parseDouble(console.nextLine());

        if (town.equals("Sofia")) {
            if (sales >=0 && sales <= 500) System.out.printf("%.2f", sales * 0.05);
            else if (sales >=500 && sales <= 1000) System.out.printf("%.2f", sales * 0.07);
            else if (sales >=1000 && sales <= 10000) System.out.printf("%.2f", sales * 0.08);
            else if (sales > 10000) System.out.printf("%.2f", sales * 0.12);
            else System.out.println("error");}

       else if (town.equals("Varna")) {
            if (sales >=0 && sales <= 500) System.out.printf("%.2f", sales * 0.045);
            else if (sales >=500 && sales <= 1000) System.out.printf("%.2f", sales * 0.075);
            else if (sales >=1000 && sales <= 10000) System.out.printf("%.2f", sales * 0.1);
            else if (sales > 10000) System.out.printf("%.2f", sales * 0.13);
            else System.out.println("error");}

        else if (town.equals("Plovdiv")) {
            if (sales >=0 && sales <= 500) System.out.printf("%.2f", sales * 0.055);
            else if (sales >=500 && sales <= 1000) System.out.printf("%.2f", sales * 0.08);
            else if (sales >=1000 && sales <= 10000) System.out.printf("%.2f", sales * 0.12);
            else if (sales > 10000) System.out.printf("%.2f", sales * 0.145);
            else System.out.println("error");}

        else System.out.println("error");

    }
}

 

0
mobretenova avatar mobretenova 1 Точки

Пробвах твоя код в Judge и Details показва грешка при отрицателно число.

Може би проблем ти прави променливата comission, която е равна на нула.

Пробвах и с други стойности на comission, и тогава като изход изкарва стойността на comission, което пак не е вярно.

Може би вариантът е да я махнеш и да печатиш резултат след всяка проверка, като при мен - хамалската :)

 

Иначе в judge,  в Details можеш да видиш какво не е както трябва:

Очакван Output и твоя Output, както и при какъв Input са.

0
MarinKakarov avatar MarinKakarov 0 Точки

Привет,

С тази логика не гърми и дава 100 от 100:

import java.util.Scanner;

public class TradeComissions {
    public static void main (String[] args) {
        Scanner scanner = new Scanner (System.in);
        String toun = scanner.nextLine ().toLowerCase ();
        double sales = Double.parseDouble (scanner.nextLine ());
        double commission = -1;


        if (toun.equals ("sofia")) {
            if (sales < 0) {
                System.out.println ("error");
            } else if (sales >= 0 && sales <= 500) {
                commission = 5;
            } else if (sales <= 1000) {
                commission = 7;
            } else if (sales <= 10000) {
                commission = 8;
            } else if (sales > 10000) {
                commission = 12;
            }
        } else if (toun.equals ("varna")) {
            if (sales < 0) {
                System.out.println ("error");
            } else if (sales >= 0 && sales <= 500) {
                commission = 4.5;
            } else if (sales <= 1000) {
                commission = 7.5;
            } else if (sales <= 10000) {
                commission = 10;
            } else if (sales > 10000) {
                commission = 13;
            }
        } else if (toun.equals ("plovdiv")) {
            if (sales < 0) {
                System.out.println ("error");
            } else if (sales >= 0 && sales <= 500) {
                commission = 5.5;
            } else if (sales <= 1000) {
                commission = 8;
            } else if (sales <= 10000) {
                commission = 12;
            } else if (sales > 10000) {
                commission = 14.5;
            }
        } else {
            System.out.println ("error");
        }
        if (commission != -1) {
            System.out.printf ("%.2f", sales * (commission / 100));
        }

    }
}
0
mobretenova avatar mobretenova 1 Точки

Супер

Много хитро решение

0
Emilenkova avatar Emilenkova 0 Точки

Благодаря ви още веднъж. Ще опитам и двата варианта, за да видя какво ще се случи. Някак исках да схвана защо ми дава грешка. Всички решения, които предлагате изглеждат добри и логични, но не намирам в моето кое не е достатъчно. Задала съм error при отрицателно число, задала съм error и при невалиден град, по моята логика следва, ако някое от тия 2 условия е изпълнено, или и двете, ако са изпълнени, да ми отпечата ерор. И в конзолата го прави. Всички проверки са ми верни. Искам да разбера къде ми е пропуска, а не просто джъдж да ми даде 100 точки. :) 

0
MarinKakarov avatar MarinKakarov 0 Точки

Привет,

Нямам много време и погледнах кода ти набързо и това което ми се наби е:

1.за double comision задай невалидна стойност с някакъв минус например 1.....10000 или колкото решиш :)

2. Проверката за error я сложи на първо място преди другите от sales (както е в кода с който коментирах) и с условие < 0 ... така се подсигуряваш , че аке тя е true , директно излизш от условието и минаваш на следващото .

П.С.: ... има и други решения от типа на return която да е още преди if - else конструкцията и при невалидна стойност директно е error и програмата приключва ... но това е друга тема , а и на този етап имаме още се учи тепърва за нея.

При въпроси не се колебай да ми пишеш ... смятам , че дискусия по код и/или проблем , ще ни надгради ...

0
03/11/2017 17:29:21
Emilenkova avatar Emilenkova 0 Точки

MarinKakarov, благодаря. С помощта на дебъгера открих грешката. Като дам най-отдолу общ принт, ми печата и при "error" стойност 0.00, а условието на задачата е при невалиден град или продажби, само тогава да печата "error". Т.е. трябва да слагам под всеки if и принт, за да не ми печата стойностите при всички положения. За това judge ми е давал 94/100. Благодаря на всичко за включването и съдействието! yes

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