Професионална програма
Loading...
+ Нов въпрос
Somma avatar Somma 2 Точки

2.2. Simple Calculations - Exam Problems -> 02. Vegetable Market

Здравейте! 

Не е въпрос, а по-скоро някакво недоразумение в Judge при оценяването на решението на задачата „02. Vegetable Market“.

Прочетох внимателно задачата и написах програмата, но Judge-а, като се „запна“ на тест 6-ти, че е грешен и аз паднах "Тест №6 (Грешен отговор)". Виждам от резултатите, че много хора има този проблем резултата да им е 90/100, заради някаква несъществуваща грешка!

Затова, само ще споделя моя опит и къде идва заблудата от самото условие на задачата (да, казвам, че задачата е написана грешно, или не е предвидено в Judge-а).

В задачата е зададено едно условие – цитирам: „Ограничения: всички числа ще са в интервала от 0.00 до 1000.00.“.

Това значи автоматично, че в плана за решаването на задачата НЕ трябва да се допускат различни стойности и естествено аз правя “if {} else{}” конструкция, за да осъществя това условие и естествено вътре започвам пресмятанията от входа на конзолата.

Но уви, неразбираемо и за мен Judge-а започна да не ми харесва "Тест №6 (Грешен отговор)", каквото и да значи това (за жалост никой не си е направил труда да опише какво значат тестовете?!?).

Направих 6 различни (малки) модификации по задачата, но Judge системата все ми връща някаква несъществуваща грешка на "Тест №6 (Грешен отговор)", а практически няма грешка! Най-малкото с тези знания дадени ни до тук по книгата "Основи на програмирането с Java" направих няколко модификации и наистина очаквах Judge-а да реагира по друг начин поне на някой от вариантите, но не! 

РЕШЕНИЕТО: Останах изключително неприятно изненадан, след като последния ми вариант беше без конструкцията “if {} else{}”?!! След като я махнах Judge-а прие всички тестове?!?

Така, че не се занимавайте излишно с това стойностите да са от 0.00 до 1000.00! Явно НЕ е част от задачата, а защо е публикувана така в книгата, не се знае. Аз лично мисля, че по-правилно би било точно обратното – ако нямаш сравнение на входните данни дали отговаря на условията на задачата, да се отнемат тия 10 точки от 6-ти тест… но то е обратното.

Владимир Маринов

Тагове:
0
Programming Basics with Java
MartinBG avatar MartinBG 2769 Точки

Ограниченията, написани в задачите, не са дадени за да бъдат влидирани входните данни, а за да помогнат за правилното подбиране на типа на променливите, в които да се съхранят (както и резултатите от използването им в програмата).

Конкретно за тази задача, явно има несъответствие между дадените ограничения в условието и реланите данни подадени от някой тест в Judge.

0
Somma avatar Somma 2 Точки

Здравейте, Мартин! :)

Благодаря за мигновената реакция! 

След като прочетох отговора виждам, че имаме коренно различна интерпретация на едно и също нещо. Аз се "хванах", че проверката на данните при входа е важна, нищо, че по книгата още не е "говорено" за това. Сега разбирам, че в условието на задачата се е имало предвид друго. Това обаче значи, че има двусмислие, щом с вас имаме различно виждане за това какво пише, а задачите не трябва да са двусмислени. 

Простото ми предложение е да се смени само семантиката на самата задача, за да не се получава, както при мен! И пак да "кажа", че виждам доста хора да са се хванали на тази уловка. Няма лошо, защото аз все пак се сетих да направя няколко експеримента и уцелих, но все пак обявения резултат беше "удар" под кръста, ако мога така да се изразя. Т.е. изключително неприятно е да си се справил пък да се получи недооценяване и то такова недооценяване, че да НЕ можеш да прочетеш, да видиш и въобще да разбереш защо става така. 

Последно: просто трябва да се преправи малко условието на задачата, за да няма двусмислие, това е! :)

Somma!

 

1
07/05/2020 16:56:57
MartinBG avatar MartinBG 2769 Точки

@Somma

Такъв е форматът на заданията в SoftUni - ще им свикнете. :)

По-напред в курса, като се стигне до валидации ще видите, че данните, които трябва да се валидират са подробно описани, вкл. и с желаното поведение - напр. хвърляне на конкретен ecxeption с конкретен message към него.

0
NikiKa avatar NikiKa 13 Точки

import java.util.Scanner;

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

        double vegetableprice = Double.parseDouble(scanner.nextLine());
        double fruitprice = Double.parseDouble(scanner.nextLine());
        int vegetablequantity = Integer.parseInt(scanner.nextLine());
        int fruitquantity= Integer.parseInt(scanner.nextLine());

        // logs

        double sum = (vegetableprice * vegetablequantity + fruitprice * fruitquantity) / 1.94;

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

    }
}
 

0
Somma avatar Somma 2 Точки

Благодаря, че се включваш в темата НикиКа, но не става дума за код или за затруднения! 

Чети внимателно какво съм писал :)

В темата казвам, че трябва да се прецизират за зададените условия, защото самите условия и описание са подвеждащи - това е! 

Отделно за кода - аз си го пригодих за Djudgе-а, но на това му се вика стъгмистика. 

В книгата ще срещнеш още затруднения с подвеждащи условия, но се надявам от колектива на СофтУни да ги прецизират с времето.

0