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 на реда под него. Защо??
 
То впоследствие промених кода като зададох commission == -1 и да отпечатва error, ако все още си е -1 и минах 100/100. Просто ми беше интересно, защо отпечатва реда с грешката при правилно зададен град и положителна стойност, имайки впредвид, че съм задал да го отпечатва само ако е <0.
Заради другите "или"та за град. То влиза заради тях, защото града е един и винаги ще се изпълни условието, че е резличен от другите два.
o.O
Сега вече ми стана ясно. Благодаря за пояснението!