Задача "02. Vapor Store"
Здравейте колеги,
Искам да помоля за малко помощ относно следната задача. Judge ми дава 20/100, а тествайки трите примера от задачата изглежда, че работи но явно само така изглежда след като Judge не е съгласен :)
https://pastebin.com/WeUeihMQ
тук е условието:
https://judge.softuni.bg/Contests/580/CSharp-Basics-More-Exercises
Много благодаря колега, така се получава!
Икам да попитам какво се променя в алгоритама, че след като се инициализира вътре в while цикъла дава 100/100, а извън него 20/100. Немога да схвана самият смисъл?
Също така искам да попитам ако ми дава грешки в тестовете след нулевият като 2, 3, 4 и т.н как мога да разбера къде ми е грашката. Има ли някакви насоки към които мога да се ориетирам къде да си търся грешката?
Сигурно за много хора въпросът изглежда глупав, но весе още съм минал сам Basics и явно знанията ми не са достатъчни да си го обясня.
Ами разликата е в това , че когато я инициализираш преди while тя може да си пази стойността при различните итерации, ако не се промени вътре в цикъла. Какво имам предивд: задаваш стойност 0 преди цикъла, после влизаш в цикъла и на първото завъртане задаваш друга цена (примерно 39.99) на конкретната игра. После идва второто завъртане на цикъла, но този път играта, която ти задават не съществува и ти изобщо не влизаш в switch условията, където променяш цените и така променливата си пази пак 39.99 и по-надолу където проверяваш if (currentBalance < priceGame) -> Console.WriteLine("Too Expensive"), ако балансът ти е под 39.99 ти изписва Too Expensive, без да е съществувала играта. Докато ако я инициализираш вътре в цикъл, на всяко повторение ще се инициализира с 0.
Ако все пак държиш променливата да ти живее извън цикъла то в default условието на switch трябва да и зададаваш
priceGame = 0.0, за да имаш промяна на цената във всички ситуации. По принцип, когато използваш една променлива само в конкретния {scope} и няма да ти трябва стойността и след това, то по добре си я инизиализирай вътре. Същото важи и за другата ти променлива nameGame, няма смисъл да я инициализираш предварително string nameGame = null и после да я четеш в цикъла. По-добре е направо в цикъла string nameGame = Console.ReadLine();, за да не ти носи старата стойност в новото завъртане.
Вече зацепих :), още веднъж благодаря за подробното обяснение!