Софтуерно Инженерство
Loading...
eli.tt avatar eli.tt 1 Точки

Подготовка за изпит: зад. 2 "Коледен базар" - помощ

Здравейте, не мога да открия откъде идват 2-та грешни отговора при тестовете в Judge-системата при проверката на следния код:

using System;

namespace Christmas_Market
{
    class Program
    {
        static void Main(string[] args)
        {
            double goal = double.Parse(Console.ReadLine());
            int fantasyNum = int.Parse(Console.ReadLine());
            int horrorNum = int.Parse(Console.ReadLine());
            int romanceNum = int.Parse(Console.ReadLine());

            double grossSum = fantasyNum * 14.90 + horrorNum * 9.80 + romanceNum * 4.30;
            double netSum = 0.80 * grossSum;
            double difference = netSum - goal;
            if (difference >= 0)
            {
                double toSellers = Math.Round(0.10 * difference);
                double donated = netSum - toSellers;
                Console.WriteLine($"{donated:F2} leva donated.");
                Console.WriteLine($"Sellers will receive {toSellers} leva.");
            }
            else
            {
                difference = Math.Abs(difference);
                Console.WriteLine($"{difference:F2} money needed.");
            }
        }
    }
}

Може ли някой да ми помогне? Благодаря предварително.

kkaraivanov avatar kkaraivanov 262 Точки

Здравей. За начало премахни всичко Math.....Промени тази променлива

double toSellers = Math.Round(0.10 * difference);

като я направиш

double toSellers = (int)(0.10 * difference);

Ако не се получи, пиши да ти дам целия код за сравнение.

0
eli.tt avatar eli.tt 1 Точки

Благодаря, с тази корекция Judge го хареса на 100%, но не мога да си обясня защо с Math.Round() не стана...

0
kkaraivanov avatar kkaraivanov 262 Точки

В случая Math.Round връща грешен резултат защото не ни е необходимо закръгляне. В този случай правилно би било да ползваш Math.Floor и нямаше да ти върне грешен отговор.

0
eli.tt avatar eli.tt 1 Точки

Вярно, в условието бе казано, че сумата трябва да е закръглена към най-близкото цяло число надолу. Как не обърнах внимание! Благодаря отново.

0