Проблем с решаването на задача от 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);
}
}
}
}
Правилна е забележката за коректността на въпросния тест. Но не е указано какво да се случва при въвеждане на некоректни данни. Явно идеята на ограниченията е била само да се определят типовете на променливите (short, int), които да се използват при запазване на входните данни. Например, за обема на басейна и дебитите на тръбите е подходящо да се използва ushort.
Сега погледнах авторското решение - и той като мен е използвал int и double
Най-лесно е да се махнат от условието на задачата тези интервали, ама това е все 1 да променяш Историята на минали събития и факти.
Затова прецених, че е по-добре да се промени самата система за проверка.
Ама карай - за друг път ще знам - първо ще гледам тест файловете за вход и изход и по тях ще се ориентирам какво е искал да мисли автора.