Loading...
DeyanAltanov avatar DeyanAltanov 6 Точки

C# Programming Basics - Trade Comissions Задача

Здравейте!

Oтносно задачата за комисионните. Условието е следното:

Напишете конзолна програма, която чете име на град (стринг) и обем на продажби (десетично число) ,

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

таблица. Резултатът да се изведе закръглен с 2 цифри след десетичната точка.

Моето решение:

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

namespace Trade_Comissions
{
    class Program
    {
        static void Main(string[] args)
        {
            string town = Console.ReadLine().ToLower();
            var range = Double.Parse(Console.ReadLine());

            var commission = 0.0;

            if (town == "sofia")
            {
                if (range >= 0 && range <= 500)
                {
                    commission = 0.05;
                    Console.WriteLine("{0:f2}", range * commission);
                }
                else if (range >= 500 && range <= 1000)
                {
                    commission = 0.07;
                    Console.WriteLine("{0:f2}", range * commission);
                }
                else if (range >= 1000 && range <= 10000)
                {
                    commission = 0.08;
                    Console.WriteLine("{0:f2}", range * commission);
                }
                else if (range > 10000)
                {
                    {
                        commission = 0.12;
                        Console.WriteLine("{0:f2}", range * commission);
                    }
                }

            }

            else if (town == "varna")
            {
                if (range >= 0 && range <= 500)
                {
                    commission = 0.045;
                    Console.WriteLine("{0:f2}", range * commission);
                }
                else if (range >= 500 && range <= 1000)
                {
                    commission = 0.075;
                    Console.WriteLine("{0:f2}", range * commission);
                }
                else if (range >= 1000 && range <= 10000)
                {
                    commission = 0.1;
                    Console.WriteLine("{0:f2}", range * commission);
                }
                else if (range > 10000)
                {
                    commission = 0.13;
                    Console.WriteLine("{0:f2}", range * commission);
                }
            }

            else if (town == "plovdiv")
            {
                if (range >= 0 && range <= 500)
                {
                    commission = 0.055;
                    Console.WriteLine("{0:f2}", range * commission);
                }
                else if (range >= 500 && range <= 1000)
                {
                    commission = 0.08;
                    Console.WriteLine("{0:f2}", range * commission);
                }
                else if (range >= 1000 && range <= 10000)
                {
                    commission = 0.12;
                    Console.WriteLine("{0:f2}", range * commission);
                }
                else if (range > 10000)
                {
                    commission = 0.145;
                    Console.WriteLine("{0:f2}", range * commission);
                }
            }

            if (town != "sofia" || town != "plovdiv" || town != "varna" || commission < 0)
            {
                Console.WriteLine("error");
            }
        }
    }
}

При грешно зададен град или отрицателна стойност на range всичко е ок(изписва error). При правилно зададен град и положителна стойност на range обаче, пресмята и изкарва желания резултат заедно със error на реда под него. Защо??

 


 

 

Тагове:
0
Programming Basics 11/06/2017 22:43:38
Sim0o0na:
Пишете темите си според правилата на форума. Вече има тема по този проблем.
Jeliozver avatar Jeliozver 356 Точки

По начина, който си го написал винаги ще отпечатва реда с грешката, защото по условие винаги въвеждаш някакъв град и реално няма начин да не се изпълни едно от "или"-тата и винаги влиза. Judge май не проверява за долънителен изход, така че ако си оправиш цифрите за комисионни на последните два случая за Варна ще ти мине на 100/100. Иначе трябва да си промениш логиката на последната проверка, за да се оправи напълно.

0
DeyanAltanov avatar DeyanAltanov 6 Точки

То впоследствие промених кода като зададох commission == -1 и да отпечатва error, ако все още си е -1 и минах 100/100. Просто ми беше интересно, защо отпечатва реда с грешката при правилно зададен град и положителна стойност, имайки впредвид, че съм задал да го отпечатва само ако е <0.

0
Jeliozver avatar Jeliozver 356 Точки

Заради другите "или"та за град. То влиза заради тях, защото града е един и винаги ще се изпълни условието, че е резличен от другите два.

0
DeyanAltanov avatar DeyanAltanov 6 Точки

o.O
Сега вече ми стана ясно. Благодаря за пояснението!

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