Loading...
slavihh avatar slavihh 0 Точки

04.Cake - задача от изпит по Programming Basics на 3 септември.

Здравейте бих се радвал да ми пратите решението на задачата защото имах доста затруднения с нея.

Ето го и условието:

Задача 4. Торта

Поканен сте на 30-тия рожден ден на Кендрик Ламар, но като част от организацията. Той иска да покани много гости и планира да вземе огромна торта. Иска да знае обаче колко парчета могат да се вземат от нея. Всеки път когато някой си вземе, трябва да се отчита, че едно или повече парчета са взети. Така трябва да се продължи докато не свърши тортата или докато гостите не спрат да си взимат.

Напишете програма, която да изчислява броя останали парчета. Ще получите размерите на тортата и след това на всеки ред, докато не получите командата STOP или докато не свърши тортата (pieces < 0), ще получавате цяло число, равно на взетите парчета. Накрая трябва да се отпечата колко парчета са останали или, че са свършили.

Note: Тортата е с правоъгълна форма. Едно парче е с размер 1х1.

Вход

Потребителят въвежда следните данни на отделни редове:

  1. Широчина на тортата – цяло число в интервала [1...1000];
  2. Дължина на тортата – цяло число в интервала [1...1000];
  3. На следващите редове (докато не получите командата STOP) брой парчета, които се взимат от тортата – цели числа в интервала [1...1000];

Изход

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

  • {брой парчета} pieces are left." - ако стигнете до STOP и не се свършили парчетата торта
  • No more cake left! You need {брой недостигащи парчета} pieces more.

Благодаря ви, предварително. :D

Тагове:
0
Programming Basics 05/09/2017 21:17:52
slavihh avatar slavihh 0 Точки

Много ти благодаря!

0
user101 avatar user101 4 Точки

Ето и едно решение с for цикъл, ако е интересно за някого :) 

https://pastebin.com/EP8T6tRQ

0
Tsekova avatar Tsekova 10 Точки

Виждам, че има решения, но се опитах да го измисля сама. Редът, където е if (current == "STOP") ми дава грешка и не мога да го оправя. Като цяло логиката вярна ли е?

            int width = int.Parse(Console.ReadLine());
            int lenght = int.Parse(Console.ReadLine());
            int total = width * lenght; // общ брой парчета в тортата
            int left = 0; // останали парчета 
            while (left >= 0)
            {
                string current = Console.ReadLine();
                left == total - int.Parse(current)
                if (current == "STOP")
                {
                    break;
                }
            }
            if (left >= 0)
            {
                Console.WriteLine($"{left} pieces are left.");
            }
            else
            {
                Console.WriteLine($"No more cake left! You need {Math.Abs(left)} pieces more.");
            }

 

0
pizata77 avatar pizata77 1 Точки

Ето едно работещо решение на c# и от мен с използването на for цикъл.

https://pastebin.com/QfrDFx8f

0
EmanuilNikolov avatar EmanuilNikolov 33 Точки

Malko преработих варианта ти. Логиката е вярна, но когато правиш изчислението за остатъка се обърква. https://dotnetfiddle.net/iRtm0W

using System;

public class Program
{
    public static void Main()
    {
        var n1 = int.Parse(Console.ReadLine());
        var n2 = int.Parse(Console.ReadLine());
        var sum = n1*n2;

        while(sum>=0)
        {
            var n3 = Console.ReadLine().ToLower();
            if(n3 == "stop")
            {
                break;
            }
            sum -= int.Parse(n3);        
            
        }
        if(sum >= 0)
        {
            Console.WriteLine("{0} pieces are left.",sum);
        }
        else
        {
            Console.WriteLine("No more cake left! You need {0} pieces more.", sum*-1);
        }
    }
}

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