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
Peter81 avatar Peter81 14 Точки

Здравей,

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

0
26/05/2017 18:16:35
spzvtbg avatar spzvtbg 581 Точки

 напиши си правилно търсените продукти с малки букви(например) и  добави към Console.ReadLine().ToLower()(или ToUpper() за големи букви)

"cheese",

"tomato souce",

"salami",

"pepper"

 

100/100 !!!

 

0
Georgieva_Nadezhda avatar Georgieva_Nadezhda 28 Точки

Здравейте, може ли някой да ми помогне с кода. При първия тест ми вади 1100, вместо 1300 и не разбирам защо. Като го дебъгвам калориите излиза 1300 :)

using System;

class CaloriesCounter
{
    static void Main()
    {
        int number = int.Parse(Console.ReadLine());

        int cheese = 500;
        int tomatoSause = 150;
        int salami = 600;
        int peper = 50;
        int calories = 0;

        for (int i = 0; i < number; i++)
        {
            string ingredient = Console.ReadLine().ToLower();
            switch (ingredient)
            {
                case "cheese": calories += cheese; break;
                case "tomato sause": calories += tomatoSause; break;
                case "salami": calories += salami; break;
                case "peper": calories += peper; break;
                default: continue;
            }
        }
        Console.WriteLine($"Total calories: {calories}");
    }
}


 

0
ppbaev avatar ppbaev 157 Точки

sauce и pepper си оправи

0
mario_ankona avatar mario_ankona 2 Точки

Здравейте Колеги, задачата в judge ми дава 83/100 (Runtime Error). Пробвах различни варианти на преобразуване, но явно знанията още не ми достигат. Мога да реша задачата без едномерните масиви, но ме е обхванала спортна злоба и искам да я реша и с тях. Благодаря предварително.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace caloriesCounter
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> allowedIngredients = new List<string>();
            allowedIngredients.Add("cheese");
            allowedIngredients.Add("tomato sauce");
            allowedIngredients.Add("salami");
            allowedIngredients.Add("pepper");

            int[] calories = new int[] { 500, 150, 600, 50 };
            int totalamount = 0;

            int numbersOfIngrediants = int.Parse(Console.ReadLine());

            for (int i = 0; i < numbersOfIngrediants; i++)
            {
                string inputIngrediants = Console.ReadLine();
                inputIngrediants = inputIngrediants.ToLower();

                foreach (string content in allowedIngredients)
                {
                    if (content.Contains(inputIngrediants))
                    {
                        int caloriesArrayPossition = Convert.ToInt32(allowedIngredients.IndexOf(inputIngrediants));
                        totalamount += Convert.ToInt32(calories.GetValue(caloriesArrayPossition));
                    }
                }
            }
            Console.WriteLine($"Total calories: {totalamount}");
        }
    }
}

 

0
01/06/2017 14:32:58
spzvtbg avatar spzvtbg 581 Точки

така като ти гледам решението не си си губил времето между базикс курса и фундаменталса :)

виж тук как ти го поорязах малко - но дава 100

https://pastebin.com/wBtPPkBZ

0
mario_ankona avatar mario_ankona 2 Точки

Благодаря за важните насоки в решението и добрите думи. Доста поучтелно е да видиш друга гледна точка на собствен проблемен код.

п.п. Ще се радвам ако някой знае и сподели относно грешката, за да мога да разбера къде съм сбъркал.

0
spzvtbg avatar spzvtbg 581 Точки

ами най - вероятно всичко започва с условната проверка защото тя прави следното проверява дали стринга от масива СЪДЪРЖА въведения стринг НО стринга "cheese" - например може да съдържа "ch" -  което съответно не се съдържа в масива и гърми!!!

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