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

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

Условието на задачата е:

Ани обича да пътува и иска тази година да посети няколко различни дестинации. Като си избере дестинация,
ще прецени колко пари ще й трябват, за да отиде до там и ще започне да спестява. Когато е спестила
достатъчно, ще може да пътува.
От конзолата всеки път ще се четат първо дестинацията и минималния бюджет, който ще е нужен за
пътуването.
След това ще се четат няколко суми, които Ани спестява като работи и когато успее да събере достатъчно за
пътуването, ще заминава, като на конзолата трябва да се изпише:
"Going to {дестинацията}!"
Когато е посетила всички дестинации, които иска, вместо дестинация ще въведе "End" и програмата ще
приключи.
 

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

 

using System;

namespace SoftUni
{
    class Program
    {
        static void Main()
        {
            while (true)
            {
                string destination = Console.ReadLine();
                if (destination == "End")
                {
                    break;
                }
                int sum = 0;
                int budget = int.Parse(Console.ReadLine());
                while (budget > sum)
                {
                    int sumInput = int.Parse(Console.ReadLine());
                    sum += sumInput;
                }
                Console.WriteLine($"Going to {destination}!");
            }
        }
    }
}
 

Тагове:
0
Programming Basics with C#
MartinBG avatar MartinBG 4803 Точки
Best Answer

Използваш неправилен тип (int, вместо double) за съхраняване на необходимите и спечелените пари. В резултат губиш дробната част и в някои от тестовете не успяваш да събереш необходимата сума, преди да стигнеш до следващата дестинация, при парсването на която се хвърля FormatException, тъй като си прочел стринг, който не е число.

Промени типа от int на double, и задачата ще мине.

Това е поправеният ти код:

using System;

namespace SoftUni
{
    class Program
    {
        static void Main()
        {
            while (true)
            {
                string destination = Console.ReadLine();
                if (destination == "End")
                {
                    break;
                }
                double sum = 0;
                double budget = double.Parse(Console.ReadLine());
                while (budget > sum)
                {
                    double sumInput = double.Parse(Console.ReadLine());
                    sum += sumInput;
                }
                Console.WriteLine($"Going to {destination}!");
            }
        }
    }
}

 

1
Angmar avatar Angmar 1 Точки

Да като се смени типа на променливата, задачата минава - благодаря. Но в самото задание не е описан какъв трябва да е вида на данните а всичките примерни инпут-и и аутпут-и са с цели числа и въобще не ми мина акъла, че е заради това.

Още веднъж благодаря за отговора.

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