Programming Basics Exam - 21 February 2016 - problem 1 - Hungry Garfield
https://judge.softuni.bg/Contests/Practice/Index/163#0
Получавам 80 точки от judje със това решение: http://pastebin.com/Gjiy1HkS .Защо?
https://judge.softuni.bg/Contests/Practice/Index/163#0
Получавам 80 точки от judje със това решение: http://pastebin.com/Gjiy1HkS .Защо?
направи си double променливите на decimal
Здравей,за изпитните задачи е много важно освен input-а и output-a да са вярни трябва и constrains-a да е еднакъв.Точно в случая трябва първите типове да са decimal(защото са пари),а количеството на храните да е uint(понеже е цяло положително число).Освен това много по-лесно ще ти е да си инициализираш типовете данни с реалните им имена вместо с var и по-рядко ще се бъркаш :)
По време на изпита получавах първоначално 80 точки. След няколкократно преглеждане на input данните, преправих повечето променливи на decimal(защото работим с пари в задачата) и ми излезна 100 точки. Пробвай и ти.
Както казаха колегите, трбва ти различен тип променливи, в които да запазваш парите.
В constrain-ите на задачата се казва, че input-а е в гранци от 0 до 2^32.
И, макар, че 2^32 се събира и в uint, променливите ти трябва да са decimal, защото Грарфиелд може да си вземе 2^32 броя сандивичи, които струват 2^32лв. а курса на долара да е нещо от сорта на 0.01. В такъв случай... само decimal може да събере получения резултат.
Целта на първата задача на изпита е да тества точно дали сме научили типовете данни, тъй че като решаваш други такива обръщай внимание именно на тях.
90 точки на тази задача , един от тестовете не минава и не ми е ясно защо.
decimal sum = decimal.Parse(Console.ReadLine());
decimal exchangeRate = decimal.Parse(Console.ReadLine());
decimal pizzaPrice = decimal.Parse(Console.ReadLine());
decimal lasagnaPrice = decimal.Parse(Console.ReadLine());
decimal sandwichPrice = decimal.Parse(Console.ReadLine());
decimal pizzaQuantity = decimal.Parse(Console.ReadLine());
decimal lasagnaQuantity = decimal.Parse(Console.ReadLine());
decimal sandwichQuantity = decimal.Parse(Console.ReadLine());
decimal pizza = (pizzaPrice / exchangeRate) * pizzaQuantity;
decimal lasagna = (lasagnaPrice / exchangeRate) * lasagnaQuantity;
decimal sandwich = (sandwichPrice / exchangeRate) * sandwichQuantity;
decimal sumTotalFoof = pizza + lasagna + sandwich;
if (sum / exchangeRate >= sumTotalFoof)
{
Console.WriteLine("Garfield is well fed, John is awesome. Money left: ${0:F2}.", sum - sumTotalFoof);
}
else
{
Console.WriteLine("Garfield is hungry. John is a badass. Money needed: ${0:F2}.", ((sum - sumTotalFoof) * -1));
не трябва да е sum/ exchange rate , a само sum >= sumTotalFood
а в плейсхолдърите може да сложиш math.abs
Здравейте,
Някой може ли да ми каже защо при следното решение получавам 60/100 точки? http://pastebin.com/zfEErZ5E
Благодаря предварително!