Loading...
Vinetu avatar Vinetu 1 Точки

Проблем с решаването на задача от Coding 101 Exam - 26 March 2016

Здравейте, опитвам се да реша тази задача "Задача 02 - Тръби в басейн".

Първоначално ми се стори много лесна, написах моето решение за няколко минути.

Тествах примерните входни данни, посочени в условието на задачата и всичко си работи добре.

Но когато се стигне до judge ми се дават само 53 / 100 точки, като не ми се показва къде греша.

Ако някой може да ми обясни къде ми е грешката, ще съм му много благодарен.

Ето и кода:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace tubes_in_the_pool
{
    class Program
    {
        static void Main(string[] args)
        {
            int poolV = int.Parse(Console.ReadLine());
            int pipe1 = int.Parse(Console.ReadLine());
            int pipe2 = int.Parse(Console.ReadLine());
            double hours = double.Parse(Console.ReadLine());

            // Литраж на водата изливана от 2-те тръби поотделно.
            double pipe1Liters = pipe1 * hours;
            double pipe2Liters = pipe2 * hours;
            // Общо количесво вода от 2-те тръби.
            double totalTwoPipes = pipe1Liters + pipe2Liters;
            // Какво количество вода е преляла. Ако прелее.
            double overflows = totalTwoPipes - poolV;

            // Какъв процент от целия басейн е пълен с вода.
            double poolPercentFull = (totalTwoPipes / poolV) * 100;
            
            // Какъв е процента на всяка една тръба от водата излята в басейна
            double pipe1Percent = (int)((pipe1Liters / totalTwoPipes) * 100);
            double pipe2Percent = (int)((pipe2Liters / totalTwoPipes) * 100);

            if (totalTwoPipes <= poolV)
            {
                Console.WriteLine("The pool is {0}% full. Pipe 1: {1}%. Pipe 2: {2}%.", 
                    poolPercentFull, pipe1Percent, pipe2Percent);
            }
            else
            {
                Console.WriteLine("For {0} hours the pool overflows with {1} liters.", hours, overflows);
            }

        }
    }
}

 

Тагове:
0
Programming Basics 23/08/2016 23:12:27
i2911 avatar i2911 0 Точки

Добър ден.
За първи път пиша тук и от сега се извинява, ако нещо съм объркал.
Днес реших тази задача.
Обаче не ми даде 100 точки веднага.
Трябваше доста неща да махна.
Не знам към кого да адресирам моето предложение и затова реших да пиша тук.
Предлагам да се направят корекции в системата за оценяване относно тази задача, защото в условието са данени интервал на стойностите:
"
... цяло число в интервала [1…10000].
... цяло число в интервала [1…5000].
... цяло число в интервала [1…5000].
... число с плаваща запетая в интервала [1.0…24.00]
"
Според ме е логично да ги напиша в решението на задачата.
Е да ама не ми дава 100 точки.
Добре, че погледнах
test.001.in.txt
и видях, че системата въвежда
12345

123

123

10
Това е добре, ама защо чака за изход:
The pool is 19% full. Pipe 1: 50%. Pipe 2: 50%.
Нали 12345 не е от интервала [1…10000] ?
Затова си махнах от решението всички проверки и веднага получих 100 точки.
Извинявам се, ако някъде е писано по този проблем, ама щом още не е решен, значи е време пак да се повдигне.
Не е редно човек да губи толко време за тази задача, за да разбере, че "Проблемът не е във Вашия телевизор."
Сега се замислям за хората на изпита на 26 March 2016 - колко време им е отнело за да изкарат 100 точки на тази задача.
Това е за сега.

0
AntonPetrov avatar AntonPetrov 491 Точки

Правилна е забележката за коректността на въпросния тест. Но не е указано какво да се случва при въвеждане на некоректни данни. Явно идеята на ограниченията е била само да се определят типовете на променливите (short, int), които да се използват при запазване на входните данни. Например, за обема на басейна и дебитите на тръбите е подходящо да се използва ushort.

0
i2911 avatar i2911 0 Точки

Сега погледнах авторското решение - и той като мен е използвал int и double
Най-лесно е да се махнат от условието на задачата тези интервали, ама това е все 1 да променяш Историята на минали събития и факти.
Затова прецених, че е по-добре да се промени самата система за проверка.
Ама карай - за друг път ще знам - първо ще гледам тест файловете за вход и изход и по тях ще се ориентирам какво е искал да мисли автора.

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