Loading...
Somma avatar Somma 6 Точки

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 4803 Точки

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

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

0
Somma avatar Somma 6 Точки

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

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

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

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

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

Somma!

 

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

@Somma

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

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

0
NikiKa avatar NikiKa 15 Точки

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 6 Точки

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

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

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

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

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

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