Loading...
RuNNeR4142 avatar RuNNeR4142 396 Точки

06. Cake , While-Loop - Exercise

6. Торта

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

Да се отпечата на конзолата един от следните редове:


 • "{брой парчета} pieces are left." - ако стигнете до STOP и има останали парчета торта.


• "No more cake left! You need {брой недостигащи парчета} pieces more."

 

https://pastebin.com/nubF982E  92/100% 

Защо така се получава?

Тагове:
0
Programming Basics with Java 30/04/2019 13:10:57
RuNNeR4142:
#razbrahmese
damesova avatar damesova 203 Точки

Здравей, 

Ето ти едно валидно решение ТУК.

Не разбрах откъде го изкара това: System.out.println("ERROR: NO CAKE"); frown

Пък да не би да гледаме различни задачи?! Виж и си свери дали е същата.

0
kerim.nizamov avatar kerim.nizamov 7 Точки

Махни равното от първата проверка, където брейкваш цикъла.Защото си противоречиш със долната проверка , така реално 0 я ползваш и когато са повече и когато са по малко . Когато вземат парчета колкото е тортата просто стават 0 парчета. Реално тортата си е стигнала за всички и не е останало нищо. Тествах го дава 100/100! 🙂

0
kerim.nizamov avatar kerim.nizamov 7 Точки

А да и колежката горе е права това с error no cake го махаш няма смисъл от него поне на тоя етап от обучението 

0
RuNNeR4142 avatar RuNNeR4142 396 Точки

Здравей,

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

Като знам какви проверки и тестове за грешки прави judge ( с всякакви реални и нереални числа като входове)  реших да подсигуря входовете на тортата ми (както ясно се вижда) да са положителни числа. Защо ли? Ами за да не направят някоя беля децата на рождения ден (ако има такива) и въведат в програмата ми две отрицателни числа и получат непредвидена торта извън бюджета за рождения ден (която може да не е и малко, (-10  *  -15) и ето имаш още 150 парчета торта като магия). Аз лично не бих позволил това да се случи. 

Знам знам, изглежда различна защото всички са я решили по друг начин - различен while и break от моя, но този начин ми допадна още от началото и като гледам логиката е абсолютно същата. Предната задача беше подобна и работеше на 100% и по двата начина, независимо дали повтаряш while със условие команда и чупиш break със преминаване на граница бройки или обратното, нямаше никакво значение.

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

 

0
yovkovbpfps avatar yovkovbpfps 8 Точки

import java.util.Scanner;

    public class cake {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);

            int width = Integer.parseInt(scanner.nextLine());
            int length = Integer.parseInt(scanner.nextLine());

            int wholeCake = width * length;
            int piecesOfCake = 0;

            while (piecesOfCake <= wholeCake) {
                String pieces = scanner.nextLine();
                if ("STOP".equals(pieces)) {
                    System.out.printf("%d pieces are left.", wholeCake - piecesOfCake);
                    break;
                }else {
                    piecesOfCake += Integer.parseInt(pieces);
                }
                if (piecesOfCake > wholeCake) {
                    System.out.printf("No more cake left! You need %d pieces more.", piecesOfCake - wholeCake);
                    break;
                }
            }
        }
    }

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