[Programming Fundamentals] 8. Calories counter
Кода ми не е написан особено добре, но за това се сетих.. Пък грешката не я виждам, дават ми 33 точки.
https://pastebin.com/Aa3P2FB1
Кода ми не е написан особено добре, но за това се сетих.. Пък грешката не я виждам, дават ми 33 точки.
https://pastebin.com/Aa3P2FB1
В условието пише, че съставките са case-insensitive, тоест трябва да минават и с главни и с малки букви. Затова можеш да ги ToLower-неш като ги четеш, и после да ги сравняваш с имената на съставките с малки букви. И цикълът ти трябва да е до < n, а не <= n:
https://pastebin.com/Mgh2SyzK
Това е твоя код, само съм го редактирал и вътре съм ти добавил коментари на нещата които съм променил, надявам се да съм бил полезен.
Опитах и гърмеше програмата, явно съм имала и друга грешка, която не съм видяла. Мерси!
Ето това е твоят код - поправен.
Първо - имаш грешка във for луупа - i <= n, вместо i < n. Тъй като започваш от i = 0, за да се изпълни n пъти, трябва да го спреш преди да се изравнят стойностите, т.е.
for (int i = 0; i < n; i++)
for (int i = 1; i <= n; i++)
са ти двата варианта, за лууп, който да се изпълни n пъти.
Второ, Judge въвежда продуктите с различни набори от главни и малки букви, затова трябва да използваш ToLower() при четенето от конзолата и да изпишеш условието в if-овете по същия начин (само с малки букви). ToLower() в твоя код можеш да използваш така:
string ingr = Console.ReadLine().ToLower();
Преместил съм декларирането на променливата тук, защото няма нужда да я декларираш извън луупа, тъй като там не се използва.
Това са ти грешките в задачата, но бих те посъветвал да слагаш всяка "къдрава" скоба на нов ред, както и да слагаш разстояния около знаците (както съм направил в редактирания код). Също така имената на променливите - "calls" и "ingr" не ти пестят особено много време в изписването, а правят кода малко по-бавен за разчитане. За печатането на резултата се препоръчва един от тези варианти, а не използването на +:
Console.WriteLine($"Total calories: {calls}");
Console.WriteLine("Total calories: {0}", calls);
Интересно, преди опитах с ToLower и ми гърмеше програмата. Сега се оправи, благодая!
Да, ако го оставиш на <= n гърми, защото очаква повече редове, отколкото са зададени.