Loading...
misho_999 avatar misho_999 6 Точки

Задача "02. Vapor Store"

Здравейте колеги,

Искам да помоля за малко помощ относно следната задача. Judge ми дава 20/100, а тествайки трите примера от задачата изглежда, че работи но явно само така изглежда след като Judge не е съгласен :)

https://pastebin.com/WeUeihMQ

тук е условието:

https://judge.softuni.bg/Contests/580/CSharp-Basics-More-Exercises

 

Тагове:
0
Programming Fundamentals
Vesso1980 avatar Vesso1980 486 Точки

Здравей колега, имаш малка грешка, която води до големи загуби на проценти :). Проблемът е в променливата priceGame, защото я инициализираш преди while цикъла. Инициализирай я вътре и ще ти даде 100%. 

0
misho_999 avatar misho_999 6 Точки

Много благодаря колега, така се получава!

Икам да попитам какво се променя в алгоритама, че след като се инициализира вътре в  while цикъла дава 100/100, а извън него 20/100. Немога да схвана самият смисъл?

Също така искам да попитам ако ми дава грешки в тестовете след нулевият като 2, 3, 4 и т.н как мога да разбера къде ми е грашката. Има ли някакви насоки към които мога да се ориетирам къде да си търся грешката?

Сигурно за много хора въпросът изглежда глупав, но весе още съм минал сам Basics и явно знанията ми не са достатъчни да си го обясня.

0
24/03/2018 11:27:15
Vesso1980 avatar Vesso1980 486 Точки

Ами разликата е в това , че когато я инициализираш преди 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();, за да не ти носи старата стойност в новото завъртане.

1
misho_999 avatar misho_999 6 Точки

Вече зацепих :), още веднъж благодаря за подробното обяснение!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.