Loading...
radybt avatar radybt 9 Точки

[Programming Fundamentals] Calories Counter

На тази задача забих здраво, нямам идея как да направя стринговете case-insensitive. Търсих в гуугъл, четох, умувах - не мога.. някакви предложения, подсказки са добре дошли. 

https://pastebin.com/mju0VNJy 

Това е което съм направил до тук! 

Тагове:
0
Programming Fundamentals 27/05/2017 12:31:10
KaloyanMadjunov avatar KaloyanMadjunov 11 Точки
Best Answer

Здравей!

Когато четеш стринга, е добре да го преобразуваш целия да е с малки букви.

Това става с функцията (метода): .ToLower().

Например: string ingredients = Console.ReadLine().ToLower();

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

Например ако имаш вход "ChEesE" ще стане "cheese" и после с проверката дали е равно на "cheese" винаги ще минава.

Поздрави!

0
26/05/2017 18:12:06
radybt avatar radybt 9 Точки

Било доста простичко, аз очаквах да трябва да използвам 20 метода, хаха. 
Благодаря! 100/100!

0
andreyrusev avatar andreyrusev 0 Точки

Не разбирам само защо нито един от посочените кодове не отговаря на условието в задачата:

 If you receive one of these ingredients more than once, you should add the calories to the total amount again. You should not process any other ingredients.

А най-тъпото е, че и judge не изисква това условие.

Написал съм един код, за който получавам 66/100 в judge, и за който мисля, че отговаря на условието в червено. Но въпреки това ми се ще някой да го погледне поне за себе си да знам, че е така. Иначе язък за времето, което ми отне.

https://pastebin.com/jLf6TzdL

0
IvanSpiridonov avatar IvanSpiridonov 17 Точки

Здравей Андрей,

Кода в червено го разбирам като:" Ако добавите една съставка два(или десет) пъти, трябва всеки път да добавяш калориите към общият сбор калории и да продължиш нататък"

Иначе си тръгнал правилно, но си си усложнил живота излишно:

няма нужда да броиш съставките (cheeseCount == 1 и другите такива),
просто добяваш калориите към общият резултат. Според мен имаш и търде много променливи в началото.

Ще стане, ако искаш погледни моето решение

 

0
KaloyanMadjunov avatar KaloyanMadjunov 11 Точки

Здравей! 

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

В твоя случай ти имаш една проверка дали броят на съответния продукт е 1, добавяш калориите към общите и приключваш. Не ти работи, защото в началото ти като си нулирал всичките броячи за съответния продукт, първият път няма да мине проверката дали са 1. След това те ще се увеличат с 1 и вече вторият път, ако е същият продукт, проверката ще мине, защото съответният брояч е вече 1 и отговаря на условието, добавяш калориите на продукта към общите и приключваш цикъла.

Добре, ами ако броят на продуктите в началото ти е бил 10? Цикълът трябва са се завърти 10 пъти. Ти си въвел един път "cheese", калориите се отброяват, брояча за този продукт става 1. Въвеждаш втори път "cheese", вече минава проверката, калориите се отброяват, цикълът приключва и принтираш калориите. Ама ти си казал 10 продукта в началото, а си въвел само 2 досега. Затова не ти излиза вярно.

Моят съвет е да махнеш тази проверка дали броят на продукт е 1 и като цяло да махнеш тези броячи - няма да ти трябват. Въвел си 10 продукта, цикълът трябва са се завърти 10 пъти. Имаш "cheese", добавяш калориите; имаш "salami", добавяш калориите; пак имаш "cheese", добавяш калориите; и така 10 пъти. Накрая имаш общия брой калории за продуктите, които си въвел. :)

0
04/06/2017 12:52:52
Peter81 avatar Peter81 14 Точки

Да, това е съвсем подробното описание. Също би било добре да провериш изписването на всеки от кейсовете.

Успех.

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