НЕРАЗБРАНИ условия в някои задачи
Здравейте,
Седнах да решавам някои от задачите, които са излизали на предишни изпити и това, което срещам, са условия на задачите, както в този пример:
"Задача 2. Цена за транспорт
Студент трябва да пропътува n километра. Той има избор измежду три вида транспорт:
- . Начална такса: 0.70 лв. Дневна тарифа: 0.79 лв. / км. Нощна тарифа: 0.90 лв. / км.
- . Дневна / нощна тарифа: 0.09 лв. / км. Може да се използва за разстояния минимум 20 км.
- . Дневна / нощна тарифа: 0.06 лв. / км. Може да се използва за разстояния минимум 100 км.
Напишете програма, която въвежда броя километри n и период от деня (ден или нощ) и изчислява цената на най-евтиния транспорт.
Вход
От конзолата се четат два реда:
- Първият ред съдържа числото n – брой километри – цяло число в интервала [1…5000].
- Вторият ред съдържа дума “day” или “night” – пътуване през деня или през нощта.
Изход
Да се отпечата на конзолата най-ниската цена за посочения брой километри."
Съответно аз написах код, в който програмата изчислява коя е най ниската цена, сравнявайки данните, с които разполагаме и прилагайки ги в два различни сценария - ден или нощ, спазвайки ограниченията за км. Кодът е тук: http://pastebin.com/SWzmU2nU
Изненадата ми дойде, когато прочетох авторското решение, където програмата просто изписва директно една от тарифите, съобразявайки се с ограниченията за км. Кодът е този>
var distance = int.Parse(Console.ReadLine());
var dayOrNight = Console.ReadLine();
var taxiRate = 0.90;
if (dayOrNight == "day") taxiRate = 0.79;
if (distance < 20)
Console.WriteLine("Taxi: {0}", 0.70 + distance * taxiRate);
else if (distance < 100)
Console.WriteLine("Bus: {0}", distance * 0.09);
else
Console.WriteLine("Train: {0}", distance * 0.06);
Въз основа на това имам два въпроса:
1. Ще могат ли да се задават въпроси на изпита по отношение на условията на задачите и щебъдат ли давани този род пояснения?
2. Някой ще бъде ли така добър да ми обясни кога се използват { } в if конструкции и кога - не и в какво се състои разликата (например опитах да направя това, което виждаме в 10, 11 ред на авторското решение и не успях защото под иф отварях къдрави скоби)?
Благодаря предварително!
Благодаря много! А защо в следния случай ми дава грешка, с обяснението, че taxi doesn't exist in the current context?
var n = int.Parse(Console.ReadLine());
var time = Console.ReadLine();
var bus = 0.09 * n;
var train = 0.06 * n;
if (time == "day")
{
var taxi = 0.79;
}
var price = Math.Min(taxi, bus);
Не си го декларирал извън if-a! Една променлива е видима само между { - отварящата и } - затварящата скоба.
var n = int.Parse(Console.ReadLine());
var time = Console.ReadLine();
var bus = 0.09 * n;
var train = 0.06 * n;
var taxi = 0d;
if (time == "day")
{
taxi = 0.79;
}
var price = Math.Min(taxi, bus);
Така би трябвало да е ОК.
Здрасти , мисля че е защото taxi е дефинирана като локална променлива (т.е. тя е видима само между { }. Ивън тях не се вижда). Пробвай да я декларираш преди if .