Loading...
luskos avatar luskos 5 Точки

Mid Exam 2019 Maрт Група 1 Задача 2 10/100

Реално объркването ми на първа задача беше доста по-голямо, бих казал че тук ми отне повече време да я напиша отколкото да я измисля, някак си задания с по-сложни типове данни и конструкции са ми по-лесни. Въпреки, че нулевите тестове минаха безгрешно от първият път и въпреки, че ми изглежда проста задачата, така както съм я описал джъдж не дава точки. Случвало се е да променят задачите вътрешно в системата докато документа с условието остава стара версия, но това което не ми се иска най-много е да е заради някой знак за равенство.Някакви идеи?

Джъдж: https://judge.softuni.bg/Contests/Practice/Index/1494#1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = Console.ReadLine();
            decimal budget = decimal.Parse(Console.ReadLine());
            decimal endProfit = 0;
            string[] types = input.Split('|').ToArray();
            List<decimal> reSell = new List<decimal>();
            foreach (var item in types)
            {
                string[] items = item.Split(new char[] { '-', '>' }, StringSplitOptions.RemoveEmptyEntries).ToArray();
                string type = items[0];
                decimal priceTag = Convert.ToDecimal(items[1]);

                if (type == "Clothes" && priceTag <= 50.00M && budget >= 50.00M)
                {
                    reSell.Add(Math.Round(priceTag * 1.4M, 2));
                    budget -= priceTag;
                    endProfit += reSell[reSell.Count - 1] - priceTag;
                }
                else if (type == "Shoes" && priceTag <= 35.00M && budget >= 35.00M)
                {
                    reSell.Add(Math.Round(priceTag * 1.4M, 2));
                    budget -= priceTag;
                    endProfit += reSell[reSell.Count - 1] - priceTag;
                }
                else if (type == "Accessories" && priceTag <= 20.50M && budget >= 20.50M)
                {
                    reSell.Add(Math.Round(priceTag * 1.4M, 2));
                    budget -= priceTag;
                    endProfit += reSell[reSell.Count - 1] - priceTag;
                }
            }
            Console.WriteLine(string.Join(" ", reSell.Select(r => r.ToString()).ToArray()));
            Console.WriteLine($"Profit: "+ endProfit);
            if (reSell.Sum() + budget >= 150)
            {
                Console.WriteLine("Hello, France!");
            }
            else
            {
                Console.WriteLine("Time to go.");
            }
        }

    }
}
Тагове:
0
Fundamentals Module 01/04/2019 09:37:11
Sad_homecoming avatar Sad_homecoming 135 Точки

Единия проблем е, че ползваш Math.Round() вместо да закръгляш с :F2 при принтирането,  ако това се смени стига до 60/100.

Другата грешка не я виждам, иначе аз съм я решил така : https://pastebin.com/NiHwQ53y

0
knoteva avatar knoteva 1081 Точки

Бюджетът трябва да е по-голям или равен на прайстага(budget >= priceTag), а не: budget >= 50.00M, 35.00M, 20.50M.

if (type == "Clothes" && priceTag <= 50.00M && budget >= 50.00M)

0
luskos avatar luskos 5 Точки

Вече сериозно се излагат, това е втората задача от изпита, а както и първата също има проблеми с условието!

  • Print the list with the bought item’s new prices, rounded 2 digits after the decimal separator in the following format:

Като ти се каже rounded значи закръгляш, като ти пише да ги форматираш с 2 знака след запетаята е съвсем друго.

Между другото като форматирах принтовете даде още 10 точки, и понеже на вас ви дава повече ме съмнява че проблемът е в прецизността на decimal и може да дава отклонения достатъчни, за да да объркат резултатите. А може би за това не получавате 100 т, защото в pastebin-a са ползвани само double-ли.

 

0
01/04/2019 23:26:32
luskos avatar luskos 5 Точки

И това не помага особенно, но сега съм изморен утре ще сравня решенията. И пак ще се включа.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.