Търговски комисионни
Къде греша ?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TradeComissions
{
class Program
{
static void Main(string[] args)
{
var town = Console.ReadLine().ToLower();
var sales = double.Parse(Console.ReadLine());
var commissions = -1.0;
if (town == "sofia")
{
if (0 <= sales && sales <= 500) commissions = 0.05;
else if (500 <= sales && sales <= 1000) commissions = 0.07;
else if (1000 <= sales && sales <= 10000) commissions = 0.08;
else if (sales >= 10000) commissions = 0.12;
}
else if (town == "varna")
{
if (0 <= sales && sales <= 500) commissions = 0.045;
else if (500 <= sales && sales <= 1000) commissions = 0.075;
else if (1000 <= sales && sales <= 10000) commissions = 0.10;
else if (sales >= 10000) commissions = 0.13;
}
else if (town == "plovdiv")
{
if (0 <= sales && sales <= 500) commissions = 0.055;
else if (500 <= sales && sales <= 1000) commissions = 0.08;
else if (1000 <= sales && sales <= 10000) commissions = 0.12;
else if (sales >= 10000) commissions = 0.145;
}
if (commissions >= -1.0)
{
Console.WriteLine("{0:f2}", (commissions * sales));
}
else
{
Console.WriteLine("Error");
}
}
}
}
Благодаря , но защо като напиша примерно Хасково....150 не ми излиза error , а -150 ?
Защото като напишеш град различен от дадените при проверките - ти НЕ влизаш в тях. Т.е. накрая като принтираш казваш:
if (commissions >= -1.0)
{
Console.WriteLine("{0:f2}", (commissions * sales));
},
което ще рече, че по условие ти задаваш var commissions = -1.0;
и при входен град Хасково или без значение кой друг извън изброените при проверката, тази комисионна няма да се промени, а ще си остане същата, тъй-като в този случай при if условията - аргумента вътре ще е лъжа - if(ако) (условие = истина) тогава изпълни кода във къдравите скоби else(в противен случай) изпълни кода след else, но ако след else има друг if, то тогава се проверява и неговото условие и така. И в този случай (и във всеки един различен от тези в проверките) градове - тези проверки няма да се изпълнят и тогава му казваш да отпечати commissions * sales, където за sales = 150 и Хасково ще получиш резултат -150.
По-добре направи if (commissions >= -1.0) да е по-голямо от нула:
if (commissions >0) - за да ти даде Еrror
Благодаря !!!