Софтуерно Инженерство
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 263 Точки

Здравей. За начало премахни всичко 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 263 Точки

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

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

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

0
n.yordanov avatar n.yordanov 1 Точки

Ето моето решение на Java, дано ти е от помощ.

package com.company;

import java.util.Scanner;

public class Task2_ChristmasMarket {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        double goal = Double.parseDouble(scanner.nextLine());
        int fantasy = Integer.parseInt(scanner.nextLine());
        int horror = Integer.parseInt(scanner.nextLine());
        int romantic = Integer.parseInt(scanner.nextLine());

        double sum = fantasy * 14.90 + horror * 9.80 + romantic * 4.30;
        double DDS = 0.2 * sum;
        double finalSum = sum - DDS;

        if (finalSum > goal) {
            double remain = finalSum - goal;
            double bonus = Math.floor(.1 * remain);
            double left = finalSum - bonus;
            System.out.printf("%.2f leva donated.%n", left);
            System.out.printf("Sellers will receive %.0f leva.", bonus);
        }
        else {
            double needed = goal - finalSum;
            System.out.printf("%.2f money needed.", needed);
        }
    }
}
0