Loading...
rado84 avatar rado84 1 Точки

Експериментиране със Small Shop - switch-case

От онзи ден ме е заглождило дали в switch-case може да се направи вложена проверка и сега реших да го разпиша, за да видя какво ще излезе. Кейсовете съм ги написал за градовете и за всеки кейс първото "ако" се чупи:

Защо не му харесва price само в първия if, когато горе съм декларирал променлива price, а за останалите не казва нищо?

http://pastebin.com/PgvtexhJ

P.S. Ясно ми е, че Console.WriteLine трябва да влезе в къдравите скоби, но ми е интересно защо, когато е извън тях, само първият прайс се чупи, а останалите - не.

Тагове:
-1
Programming Basics 13/06/2016 09:56:15
a.beshovishki avatar a.beshovishki 79 Точки

задай стойност на prise  =  0; в началото.

1
ppepii avatar ppepii 0 Точки

със break; казваш край на изпълнението за този case, затова кода ти се чупи, а price е подчертано защото има вероятност да няма стойност при така зададено условие. Прочети малко повече за switch statement. Вложените проверки във всеки case може да ги направиш с else if(){} където да зададеш стойност на price и след това чак да принтираш резултата 

Console.WriteLine("{0:F2}", quantity * price);

няма нужда да го пишеш след всеки if

0
rado84 avatar rado84 1 Точки

Пробвах с else if - всъщност това беше първото, което пробвах. Обаче else бива подчертан в червено, а if си остава неподчертан.

Колкото до другото, при изпълнение с Ctrl+F5 не изписва цена, ако не вкарам WriteLine в/след всеки if.

-1
rado84 avatar rado84 1 Точки

А това защо? Ако вкарам WriteLine вътре в къдравите скоби, кодът си работи и без да задавам нулева цена горе и резултатът си го изписва правилно. Какво прави приравняването на цената към нула?

-1
Kalo7o avatar Kalo7o 3 Точки

Аз на друго се дразня - Judge не показва output  и задачата както и да я наппиша все ми я дава на 80%

0
rado84 avatar rado84 1 Точки

Напротив, показва:

-1
Kalo7o avatar Kalo7o 3 Точки

0
rado84 avatar rado84 1 Точки

Ами това означава, че не си написал код за output. Вероятно нямаш Console.WriteLine или пък не си го сложил там, където трябва да бъде.

-1
borislav9212 avatar borislav9212 745 Точки

Здравей,

Като отидеш с курсора на price, изписва "use of unassigned local variable", тоест трябва да зададеш стойност -> double price = 0.0; Също така можеш да изведеш Console.WriteLine, най - отдолу да не го пишеш навсякъде ето така http://pastebin.com/735nwgff

0
13/06/2016 10:17:29
rado84 avatar rado84 1 Точки

А това защо? Ако вкарам WriteLine вътре в къдравите скоби, кодът си работи и без да задавам нулева цена горе и резултатът си го изписва правилно. Какво прави приравняването на цената към нула?

А сега пък се появи нещо ново - всеки втори if е unreachable и не иска да му калкулира цена изобщо. Пиша water, sofia, 4 и вместо цена, направо ми изкарва "press any key to continue".

-1
borislav9212 avatar borislav9212 745 Точки

Ако искаш да изведеш цената с един Console.WriteLine, трябва да я инициализираш, но без да зададеш стойност не може да се компилира трябва да зададеш 0.0(защото е от тип double). Mоже и във всеки " if " печаташ както ти си го направил, но няма нужда от { price = 0.80; } а директно задаваш цената ->  Console.WriteLine("{0:F2}", quantity * 0.80); В този случай не ти трябва double price = 0.0;

Имаш няколко грешки в цените и другата грешка която правиш е че break-ваш " if " и не се влиза в проверката по този начин и не печатиш нищо, Break се използва само за switch - case  ето поправен твоя код 100/100 в Judge http://pastebin.com/XUAcH2gk

1
rado84 avatar rado84 1 Точки

Ахааа, значи независимо колко if-а имаш в кейса, брейк се слага само след последния иф, защото всичките тези иф-ове се броят за един кейс. Сега нещата станаха по-ясни.

А какви са ми грешките в цените? Ако съм повторил стойността на някоя цена, това не е страшно, все пак само експериментирам тук.

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