Loading...

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

Daniel111 avatar Daniel111 11 Точки

Помощ за задачата Разходи за почивка

Здравейте може ли някой да ми обясни тези редове от кода

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

Условие

https://softuni.bg/downloads/svn/programming-basics-v4/course-directories/september-2019/2019-06/Exam/06.%20Trip%20Expenses.pdf

 

using System;

namespace P06_TripExpenses
{
    class P06_TripExpenses
    {
        static void Main(string[] args)
        {
            int daysOfTrip = int.Parse(Console.ReadLine());
            double moneyLeft = 0.0;
            for (int i = 0; i < daysOfTrip; i++)
            {
                double dayLimit = 60 + moneyLeft;
                moneyLeft = 0; /// защо зануляваме moneyLeft ?
                string input = Console.ReadLine();
                int products = 0;
                while ("Day over" != input)
                {
                    double price = double.Parse(input);
                    if (dayLimit - price >= 0)
                    {
                        dayLimit -= price;
                        products++;
                    }
                    else
                    {
                        input = Console.ReadLine();
                        continue; /// какво прави този else и continue?
                    }

                    if (dayLimit == 0)
                    {
                        break;
                    }

                    
                }
                if ("Day over" == input)
                {
                    moneyLeft = Math.Abs(moneyLeft - dayLimit);
                    Console.WriteLine($"Money left from today: {moneyLeft:F2}. You've bought {products} products.");
                }
                else
                {
                    Console.WriteLine($"Daily limit exceeded! You've bought {products} products.");
                }
            }
        }
    }
}

 

Тагове:
0
Programming Basics 29/07/2019 21:45:31
msmner avatar msmner 38 Точки
Best Answer

Здравей!
Нулира го за да изчисли остатъка наново за всеки ден. На предния ред прибавя стойността от предния ден към лимита за днешния ден.

Else конструкцията там проверява дали цената на продукта превишава лимита. Ако е така по условие трябва да игнорираме продукта, т.е. да вземем нов вход и да почнем цикъла отначало, което прави continue.


След else-а проверява дали лимитът за деня е стигнат. Ако е стигнат спираме цикъла с break и отиваме на проверките отдолу.

Ето и друго решение: https://pastebin.com/t4SxbMxy

Поздрави!

0
RuNNeR4142 avatar RuNNeR4142 396 Точки
public class E06TripExpenses {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int days = Integer.parseInt(sc.nextLine());
        double budget = 0;

        for (int i = 0; i < days; i++) {

            budget += 60;
            int boughtProducts = 0;
            String input = sc.nextLine();
            boolean limitReached = false;

            while (!input.equals("Day over")) {

                double price = Double.parseDouble(input);

                if (budget >= price) {

                    budget -= price;
                    boughtProducts++;
                }

                if (budget == 0) {

                    System.out.printf("Daily limit exceeded! You've bought %d products.%n", boughtProducts);
                    limitReached = true;
                    break;
                }

                input = sc.nextLine();
            }

            if (!limitReached) {

                System.out.printf("Money left from today: %.2f. You've bought %d products.%n", budget, boughtProducts);
            }
        }
    }
}
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.