Loading...
Maria999 avatar Maria999 1 Точки

Чаша с вода

 Здравейте, 

Къде ми е грешката на задачата?

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

Диспенсърът има три бутона :

  • Easy - лесен (50 милилитра)
  • Medium - среден (100 милилитра)
  • Hard - силен (200 милилитра)

Ще получите обемът на чашата и на всеки следващ ред кой бутон е бил натиснат. Ако чашата се напълни или прелее програмата приключва.

Ако чашата прелее отпечатайте колко вода е била излята. При успешно напълване отпечатайте броят на натисканията на бутона.

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

namespace Water
{
    class Program
    {
        static void Main(string[] args)
        { 
            int cup = int.Parse(Console.ReadLine());
            int counter = 0;
            int volume = 1;
            int overallVolume = 1;
            string buttons = Console.ReadLine();

            while ((buttons = Console.ReadLine()) != null && overallVolume < cup)
            {
                switch(buttons)
                {
                    case "Easy":
                        cup = 50;
                        break;
                    case "Medium":
                        cup = 100;
                        break;
                    case "Hard":
                        cup = 200;
                        break;
                }
                overallVolume += volume;
                counter++;
            }
            if (overallVolume > cup)
            {
                int spiltWater = overallVolume - cup;
                Console.WriteLine($"{spiltWater}ml has been spilled.");
                
            }
            else
            {
                Console.WriteLine($"The dispenser has been tapped {counter} times.");
            }
        }
    }
}

 

Тагове:
0
Programming Basics with C#
kr056 avatar kr056 64 Точки

Има доста грешки.

volume и overallVolume няма причина да са 1,трябва да са 0.

И като цяло можеш да махнеш volume,а само в switch-a да прибавяш стойнтоста на бутона към overallVoulme с +=.

Първо и двете условия на цикъла не вършат работа.

По-лесно е ако се използва while(true) и в цикъла използваш return когато чашата се напълни или препълни.

Втората грешка е че в switch променяш стойноста на "cup",вместо да вземеш тази на бутона.

Оправих го и минава 100/100,можеш да го погледнеш и да видиш разликите.

https://pastebin.com/CGatM6i1

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

 

0
11/11/2018 12:12:20
DimitarVlaev avatar DimitarVlaev 91 Точки

Здравей, ето и моето решение:

 

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

namespace WaterDispenser
{
    class Program
    {
        static void Main(string[] args)
        {
            int cupVolume = int.Parse(Console.ReadLine());
            int volumePoured = 0;
            int sum = 0;
            int counter = 0;

            while (sum < cupVolume)
            {
                string button = Console.ReadLine();

                if (button == "Easy") volumePoured = 50;
                else if (button == "Medium") volumePoured = 100;
                else if (button == "Hard") volumePoured = 200;

                sum += volumePoured;
                counter++;
            }
            if (sum == cupVolume) Console.WriteLine($"The dispenser has been tapped {counter} times.");
            else Console.WriteLine($"{sum - cupVolume}ml has been spilled.");
        }
    }
}
 

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