Упражнение:Проверки, задача 7 - World Record и Judge оценяване <100 при зададени диапазони
Здравейте,
Забелязах, че judge дава 100 точки при решение на задачата без да се задава диапазон на променливите, въвеждани в конзолата. Такива ограничения в условието са "Рекордът в секунди – реално число в интервала [0.00 … 100000.00],Разстоянието в метри – реално число в интервала [0.00 … 100000.00] и Времето в секунди, за което плува разстояние от 1 м. - реално число в интервала [0.00 … 1000.00]".
Judge без проблем дава 100 точки при ТОЗИ КОД .Ако погледнете обаче, ще установите, че няма никакви ограничения за стойностите при въвеждане в конзолата, а само е зададено, че са double.
Ако заменя обаче
cin >> worldrecord;
с аналогична на останалите проверки, а именно:
do
{
cin.clear();
cin >> worldrecord;
}
while (cin.bad() || worldrecord < 0 || worldrecord > 100000);
Judge вече дава ... 90 точки... Разликата е само в това, ето и кода с проверка за диапазон.
Някаква идея защо се получава това (judge споделя само Test #6 (Incorrect answer), а с какво тества един Наков знае), къде бъркам и как да го избегна при подобни проверки.
Благодаря.
Съгласен съм, но не е ли важно да спазим условието?
В някои от задачите ако променливите са извън диапазона, резултатът ще е плачевен (делене на нула, безкрайност, отрицателни стойности за време или разстояние и т.н.).
И понеже не виждам стойностите в гърмящия тест, мога само да предполагам, че са извън посочения в условието диапазон, кодът ми ги реже и judge дава грешка. Така ли е?
Да,има логика. :)