Loading...
MVassileva avatar MVassileva 2 Точки

PB C#: While-Loop Excercise - 06. Cake

Здравейте,

На този код ми дава 92/100 точки без да показва къде е грешката:

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

namespace _16.Cake
{
    class Program
    {
        static void Main(string[] args)
        {
            int pcsWidth = int.Parse(Console.ReadLine());
            int pcsLenght = int.Parse(Console.ReadLine());

            int pcsCakeTotal = pcsWidth * pcsLenght;

            int pcsTaken = 0;
            int pcsTakenTotal = 0;
            string command = string.Empty;

            while (pcsTakenTotal < pcsCakeTotal)
            {
                command = Console.ReadLine().ToLower();
                if (command != "stop")
                {
                    pcsTaken = int.Parse(command);
                    pcsTakenTotal += pcsTaken;
                    if (pcsTakenTotal >= pcsCakeTotal)
                    {
                        Console.WriteLine($"No more cake left! You need {pcsTakenTotal - pcsCakeTotal} pieces more.");
                        break;
                    }
                }
                else if (command == "stop")
                {
                    Console.WriteLine($"{pcsCakeTotal - pcsTakenTotal} pieces are left.");
                    break;
                }
            }
        }
    }
}

Някой може ли да ми помогне да открия къде греша? Много благодаря!

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

Не са нъплно верни проверките,при 25 парчета торта и вземеш 25,pcsTakenTotal ще ти е равен на pcsCakeTotal при което ще получиш изход "No more cake left!You need 0 pieces more!" което няма да е вярно.

Трябва да оправиш if (pcsTakenTotal >= pcsCakeTotal) на if (pcsTakenTotal > pcsCakeTotal),но тогава условието на while няма да се изпълнява повече и програмата ще приключи без да изпише нищо.

Затова трябва да промениш while на  while (pcsTakenTotal <= pcsCakeTotal).

Така написан кода условието на while и if-а се застъпват и става леко объркващо.

 Ето едно по-чисто решение без вложени проверки.

https://pastebin.com/BL3FhcCT

1
MVassileva avatar MVassileva 2 Точки

Благодаря!

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