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
Сега вече ми стана ясно. Благодаря за пояснението!