Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Iv_Konov avatar Iv_Konov 383 Точки

Разсъждения относно - 05. Cake - While-Loop - Exercise

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

 

Обръщам се към вас, за да обсъдим условието на задачата. По-точно казано, дали условието на задачата е коректно написано в съответствие с проверките на съдията? И практически, става дума за едно равно - "=", маркирано по-долу. Когато го има в програмата, тестът минава 100/100, в противен случай с 92/100.

while (usedPcs <= cakePcs)

Смисълът на това равно е - дали трябва да се приемат поръчка за нови парчета торта (от конзолата), след като тортата е свършила при последната поръчка/вход без нужда от други парчета, т.е. точно без липси и излишък - (*точно - детайли в примера по-долу)! Когато равното присъства в програмата, конзолата ще чака нова порция парчета торта, след като тортата е свършила вече!

Пример:

Вход 1 - ширина на тортата = 1

Вход 2 - дължина на тортата = 1, т.е. максималният брой парчета в тортата е 1бр.

Вход 3 - 1 - приемам, че е поискано едно парче и с него тортата свършва *точно!

 

Вариант А: има го равното.

Вход 4 - 10

Изход: No more cake left! You need 10 pieces more.

 

Вариант Б: няма го равното

(тук няма 4 вход)

Изход: No more cake left! You need 0 pieces more.        // наистина, изразът при такъв изход звучи странно..., най-вероятно тази хватка с равното е замислена от автора на задачата

 

Според мен, съгласно условието на задачата, след като свърши тортата, не трябва да се чака нов вход от конзолата за парчета торта. Прав ли съм или не разбирам коректно текста?!?

 

Условие:

https://softuni.bg/trainings/resources/officedocument/38458/exercise-problem-descriptions-programming-basics-with-csharp-february-2019/2275

Съдията:

https://judge.softuni.bg/Contests/Compete/Index/1163#4

Код: https://pastebin.com/iz88vxZA

 

"Ще получите размерите на тортата (широчина и дължина – цели числа в интервала [1...1000]) и след това на всеки ред, до получаване на командата "STOP" или докато не свърши тортата, броят на парчетата, които гостите вземат от нея."

 

Има още едно изречение, което има нещо общо с това равно:

"Той обаче не знае колко парчета могат да си вземат гостите от нея."

 

Но и въпреки това, дори и да не се знае предварително колко парчета има за раздаване, след като тортата е свършила, не би следвало да се чака нов вход от конзолата за допълнителен брой нужни парчета торта..., или вероятно, единствената логика е, за да няма наличие на странно изречение от типа - You need 0 pieces more. -  трябва да се чака нов вход от конзолата, за да звучи изречението добре.

 

Поздрави,

Иван

Тагове:
0
Programming Basics with C# 09/03/2019 19:59:30
e_panova avatar e_panova 51 Точки

Здравей,
Напълно съм съгласна с теб, че условието не е написано съвсем коректно. Хем ни казват, че ще получаваме от конзолата броя парчета, докато не свърши тортата (или при команда STOP), хем ако свърши тортата, трябва да получим още един вход. Но тъй като не ни е даден специален изход за торта, която е стигнала точно(без да сме получили STOP), явно трябва да приемем, че се нуждаем от още един вход на конзолата, за да пресметнем за колко гости още ще са ни необходими парчета.

 

0
Iv_Konov avatar Iv_Konov 383 Точки

Здравей,

 

Благодаря за мнението.

 

Никой друг не пише, явно текстът се разбира като не съвсем изряден... От друга страна, задачата е стара и не се маха/коригира. Вероятно организаторите имат основания, за да я държат за тренировка.

 

Днес има упражнения и ще питам лектора за становище.

 

Поздрави,
Иван :)

1
10/03/2019 15:49:29
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

това се наричат edge cases има си причина да не ви ги описват точно нещата. Свиквайте да мислите какво може да ви счупи логиката която пишете, и това са елементарни примери с това равно. По нататък се подават и по-малко Hints. Цялото упражнение да са така условията е да свиквате да мислите как да пишете кода и да го защитавате за тези особено случай при които са възможни няколко варианта и какво трябва да се случи тогава.

0
Iv_Konov avatar Iv_Konov 383 Точки

Здравей, TeodorStefanovPld, 

   

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


Треньорът от упражненията не смогна да провери задачата, но категорично, и това не е от съществено значение...

От друга страна, гледам, че някой ти е сложил отрицателен вот..., аз лично не разбира защо. Разбира се, всеки има право на мнение, но този пост го пуснах, не за да покажа и осъдя евентуални грешки в документите, а за да проверя техническото мнението на колегите по задачата, и все пак, ако някой се бори няколко часа и не решава задачата, то може от поста да разбере защо не получава 100/100!

 

Поздрави,
Иван :)

0
11/03/2019 11:20:38
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

ще ви дам пример.Случи ми се днес изгубих 2 часа, да търся защо пътищата в уеб сайта ми се  чупят.И се оказа че е един атрибут които уж трябваше да казва да е точно този път. И да накрая питах колега и тои го предложи като вариант,аз бях блокирал а и помощните тоолс които ползваме също даваха правилните отговори, търсих грешката в front end-a. Та програмирането е неблагодарно понякога,така е и с решаването на задачите,някои edge cases ще ги изпуснете. И един съвет не мислете за 100те точки те няма да ви намерят после работа.А разбирането и правенето на алгоритъма. Е примерно всички колеги от моя поток ме знаят изкарам 250-300 точки и си тръгвам от изпит. На уеб курса имах максимума защото е курсова и го правех с кеф. Намерих си работа от 3то интервю,и то не защото съм имал 100/100 или макс оценки, това никои не го гледа а защото учех с разбиране и кодя по 24/7 та това е пътя.

2
Iv_Konov avatar Iv_Konov 383 Точки

Добро утро, TeodorStefanovPld, 

 

Категорично няма спор!

 

Становището ти има дълбока и стабилна основа, потвърдена от опит, т.е. напълно достатъчно е да приключим темата с най-добър отговор!

 

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

 

Поздрави и успешен ден,

Иван :)

1
12/03/2019 09:41:53
ivanova_iliana avatar ivanova_iliana 9 Точки

Ползвала съм булева променлива в задачата - друг начин за решение.

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {

            int widthCake = int.Parse(Console.ReadLine());
            int lengthCake = int.Parse(Console.ReadLine());

            int numberOfPieces = widthCake * lengthCake;

            bool enoughPieces = true;

            while (numberOfPieces >= 0)
            {
                string stopCondition = Console.ReadLine();

                if (stopCondition == "STOP")
                {
                    enoughPieces = false;
                    Console.WriteLine($"{numberOfPieces} pieces are left."); break;
                }
                else
                {
                    numberOfPieces -= int.Parse(stopCondition);
                }
            }
            if (enoughPieces)
            {
                Console.WriteLine($"No more cake left! You need {Math.Abs(numberOfPieces)} pieces more.");
            }
        }
    }
}

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