Loading...

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

k.durzhev avatar k.durzhev 2 Точки

Fuel Tank Part - 2

Здравейте,

 

Пиша във връзка с последната задача от Contests/PB-More-Exercises/Conditional Statements - More Exercises - Fuel Tank Part 2.

Реших задачата и judge ми дава 100/100. Обаче, за толкова лесна задача 121 реда код ми се виждат прекалено много. Моля за някаква препоръка/идея как да я реша "по-хитро".

Код: тук.

 

 

Тагове:
0
Programming Basics
mark79 avatar mark79 639 Точки

Здравей,

може да разгледаш и този код ..

            string fuelType = Console.ReadLine();
            double fuelQty = Double.Parse(Console.ReadLine());
            string discountCard = Console.ReadLine();

            double fuelPrice = 0;
            switch (fuelType)
            {
                case "Gas":
                    fuelPrice = discountCard == "Yes" ? 0.93 - 0.08 : 0.93;
                    break;
                case "Gasoline":
                    fuelPrice = discountCard == "Yes" ? 2.22 - 0.18 : 2.22;
                    break;
                case "Diesel":
                    fuelPrice = discountCard == "Yes" ? 2.33 - 0.12 : 2.33;
                    break;
            }

            if (fuelQty > 25)
            {
                fuelPrice *= 0.90;
            }
            else if (fuelQty >= 20)
            {
                fuelPrice *= 0.92;
            }

            double result = fuelQty * fuelPrice;
            Console.WriteLine($"{result:f2} lv.");

Поздрави :)

0
kkaraivanov avatar kkaraivanov 486 Точки

В бейсик курса, shorthand референциите минават ли в judge?

0
mark79 avatar mark79 639 Точки

Здравей,

може да опитате и да кажете дали минават.

Поздрави :)

0
kkaraivanov avatar kkaraivanov 486 Точки

Естествено ще минат защото judge чете генерирания стринг и отговаря ли на критерия, но предполагам, прескачане на материал ще доведе до преписване на код и неразбиране на функционалността му. Judge ще приеме отговорите за верни ако логиката в кода е изпълнена и с отделни методи или клас, но то пак си е прескачане на материал. Ще се прецакаме :)

0
xokca avatar xokca 1 Точки

Аз имам същия проблем. Кодът ми работи и judge дава 100/100, но е 147 реда.

https://pastebin.com/Qhm6P6K8

Въпроса ми е има ли как да се опрости кода (конктретно в моя случай) без да се използва "switch statemnent" и "conditional operator (?:)", защото все пак задачата е от "More Conditional Statements Exercises", които аз се оптивам да решавам след първите две лекции, а иммено "Първи стъпки в програмирането" и "Проверки". На този етап още не сме взели вложени проверки, нито "switch statement" или "ternary operator (?:)". Благодаря предварително.

0
04/09/2020 15:56:21
Axiomatik avatar Axiomatik 2422 Точки

Voila.

One super compact fuel tank (100%):

using System;

namespace FuelTank2
{
    class Program
    {
        static void Main(string[] args)
        {
            string fuelType = Console.ReadLine();
            double fuelAmount = double.Parse(Console.ReadLine());
            string clubCard = Console.ReadLine();

            double gasolinePrice2 = clubCard == "Yes"
                ? (2.22 - 0.18) : 2.22;
            double gasPrice2 = clubCard == "Yes"
                ? (0.93 - 0.08) : 0.93;
            double dieselPrice2 = clubCard == "Yes"
                ? (2.33 - 0.12) : 2.33;

            double result = 0;

            if (fuelType == "Gasoline")
            {
                result = gasolinePrice2 * fuelAmount;
            }
            else if (fuelType == "Gas")
            {
                result = gasPrice2 * fuelAmount;
            }
            else if (fuelType == "Diesel")
            {
                result = dieselPrice2 * fuelAmount;
            }

            result = fuelAmount > 25
                ? result *= .90
                : fuelAmount >= 20
                ? result *= .92
                : result;

            Console.WriteLine($"{result:f2} lv.");
        }
    }
}

0
Axiomatik avatar Axiomatik 2422 Точки

And without ternary operator:

using System;

namespace FuelTank2
{
    class Program
    {
        static void Main(string[] args)
        {
            string fuelType = Console.ReadLine();
            double fuelAmount = double.Parse(Console.ReadLine());
            string clubCard = Console.ReadLine();

            double gasolinePrice = 2.22;
            double gasPrice = 0.93;
            double dieselPrice = 2.33;

            double gasolinePriceWithClubCard = gasolinePrice - 0.18;
            double gasPriceWithClubCard = gasPrice - 0.08;
            double dieselPriceWithClubCard = dieselPrice - 0.12;

            double result = 0;

            if (fuelAmount > 25)
            {
                gasolinePrice *= .9;
                gasPrice *= .9;
                dieselPrice *= .9;

                gasolinePriceWithClubCard *= .9;
                gasPriceWithClubCard *= .9;
                dieselPriceWithClubCard *= .9;
            }
            else if (fuelAmount >= 20)
            {
                gasolinePrice *= .92;
                gasPrice *= .92;
                dieselPrice *= .92;

                gasolinePriceWithClubCard *= .92;
                gasPriceWithClubCard *= .92;
                dieselPriceWithClubCard *= .92;
            }

            if (clubCard == "Yes")
            {
                if (fuelType == "Gasoline")
                {
                    result = gasolinePriceWithClubCard * fuelAmount;
                }
                else if (fuelType == "Gas")
                {
                    result = gasPriceWithClubCard * fuelAmount;
                }
                else if (fuelType == "Diesel")
                {
                    result = dieselPriceWithClubCard * fuelAmount;
                }
            }
            else
            {
                if (fuelType == "Gasoline")
                {
                    result = gasolinePrice * fuelAmount;
                }
                else if (fuelType == "Gas")
                {
                    result = gasPrice * fuelAmount;
                }
                else if (fuelType == "Diesel")
                {
                    result = dieselPrice * fuelAmount;
                }
            }

            Console.WriteLine($"{result:f2} lv.");
        }
    }
}

0
xokca avatar xokca 1 Точки

Your solution reduced the code in half. That's what i was asking for. Thank you.

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