Loading...
dido1092 avatar dido1092 37 Точки

04.Tourist_Shop

Имам проблем с тази задача в judge ми дава 70/100 ще съм благодарен на помощ за да открия къде ми е грешката!

https://pastebin.com/fbhyP8ta тук е моя код!

https://judge.softuni.bg/Contests/Practice/Index/1654#3

Изпит по "Основи на програмирането" - 2 и 3 Май 2019

Задача 4. Туристически магазин

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

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

Вход

От конзолата се чете:

  • На първи ред – бюджетът - реално число в интервала [1.00… 100000.00]
  • След това поредица от два реда (до получаване на команда "Stop" или при заявка за купуване на продукт, чиято стойност е по-висока от наличния бюджет) :
    • Име на продукта – текст
    • Цена на продукта – реално число в интервала [1.00… 5000.00]

Изход

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

  • При получаване на командата "Stop", на един ред:
    • "You bought {брой на закупените продукти} products for {цена на покупките} leva."
  • При заявка за покупка на продукт, чиято цена е по-висока от останалите пари, на два реда:
    • "You don't have enough money!"
    • "You need {недостигащи пари} leva!"

Примерен вход и изход

Вход

Изход

Обяснения

153.20

Backpack

25.20

Shoes

54

Sunglasses

30

Stop

You bought 3 products for 94.20 leva.

Бюджета е 153.20 лв.

Купуваме раница за 25.20 лева. Остават 128 лв.

Купуваме обувки за 54 лева. Остават 74 лв.

Купуваме слънчеви очила за 30 лева, но тъй като за всеки трети продукт има отстъпка и цената му е наполовина, така че цената на очилата става 30 / 2 = 15 лева. Остават 59 лв.

Получаваме командата "Stop", купили сме 3 продукта на обща стойност 25.20 + 54 + 15 = 94.20 лв.

Вход

Изход

Обяснения

54

Thermal underwear

24

Sunscreen

45

You don't have enough money!

You need 15.00 leva!

Бюджета е 54 лв.

Купуваме термо бельо за 24 лева. Остават 30 лв.

Заявка за закупуване на компас на стойност 45 лева, но останалите пари са 30 лв. Не достигат 45 – 30 = 15 лева.

 

Тагове:
0
Programming Basics
RuNNeR4142 avatar RuNNeR4142 396 Точки

Сравняваш цената на 3ти продукт с бюджета преди да я намалиш на 50%.
Размести логиката малко и пусни нов код ако не стане.

0
05/07/2019 17:04:28
dido1092 avatar dido1092 37 Точки

Разместих If-овете дава ми 50/100

 

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

namespace _04.Tourist_Shop
{
    class Program
    {
        static void Main(string[] args)
        {
            double budget = double.Parse(Console.ReadLine());
            int numberOfProducts = 0;
            double sum = 0;

            while (true)
            {
                string productName = Console.ReadLine();
                if (productName == "Stop")
                {
                    Console.WriteLine($"You bought {numberOfProducts} products for {sum:f2} leva.");
                    break;
                }
                else
                {
                    double productPrice = double.Parse(Console.ReadLine());
                    numberOfProducts++;


                    if (numberOfProducts % 3 == 0)
                    {
                        sum += productPrice / 2;
                        budget -= productPrice / 2;
                    }
                    else
                    {
                        sum += productPrice;
                        budget -= productPrice;
                    }
                    if (productPrice > budget)
                    {
                        Console.WriteLine($"You don't have enough money!");
                        Console.WriteLine($"You need {productPrice - budget:f2} leva!");
                        break;
                    }
                }
            }
        }
    }
}
 

0
RuNNeR4142 avatar RuNNeR4142 396 Точки

Сега пък първо купуваш продукта на правилната цена
и после проверяваш дали ти стигат парите да купиш продукта.
Още разместване.

0
05/07/2019 18:53:31
dido1092 avatar dido1092 37 Точки

нещо не включвам какво друго може да се размества?!

0
ralichka avatar ralichka 0 Точки

Никъде не допускаш варианта входът на productPrice да ти е "Stop". Съответно първо следва да го декларираш като string и след това да го парснеш.

 

Редакция: - не е това проблемът, явно написаният по-горе вариант е изключен по default.

0
05/07/2019 20:04:06
RuNNeR4142 avatar RuNNeR4142 396 Точки

Трябва една промелива за брояча на продукти и друга променлива за броят на закупени продукти.


namespace _04.Tourist_Shop
{
    class Program
    {
        static void Main(string[] args)
        {
            double budget = double.Parse(Console.ReadLine());
            int numberOfProducts = 0;
            int productsBought = 0;
            double sum = 0;

            while (true)
            {
                string productName = Console.ReadLine();
                if (productName == "Stop")
                {
                    Console.WriteLine($"You bought {productsBought} products for {sum:f2} leva.");
                    break;
                }
                else
                {
		double productPrice = double.Parse(Console.ReadLine());
		numberOfProducts++;
				     
	       if (numberOfProducts % 3 == 0)
                    {
                        productPrice /= 2;
                    }
                    
              		if (productPrice > budget)
                    {
                        Console.WriteLine($"You don't have enough money!");
                        Console.WriteLine($"You need {productPrice - budget:f2} leva!");
                        break;
                    }
                    
                    productsBought++;
                    sum += productPrice;
                    budget -= productPrice;
                }
            }
        }
    }
}

 

1
05/07/2019 20:32:40
dido1092 avatar dido1092 37 Точки

Промених малко кода дава сега 100/100, но не разбрах защо е нужна променливата 'productBought'?!

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

namespace _04.Tourist_Shop
{
    class Program
    {
        static void Main(string[] args)
        {
            double budget = double.Parse(Console.ReadLine());
            int numberOfProducts = 0;
            double sum = 0;

            while (true)
            {
                string productName = Console.ReadLine();
                if (productName == "Stop")
                {
                    Console.WriteLine($"You bought {numberOfProducts} products for {sum:f2} leva.");
                    break;
                }
                else
                {
                    double productPrice = double.Parse(Console.ReadLine());
                    numberOfProducts++;

                    if (numberOfProducts % 3 == 0)
                    {
                        productPrice /= 2;
                    }
                    if (productPrice > budget)
                    {
                        Console.WriteLine($"You don't have enough money!");
                        Console.WriteLine($"You need {productPrice - budget:f2} leva!");
                        break;
                    }
                    sum += productPrice;
                    budget -= productPrice;
                }
            }
        }
    }
}
 

1
RuNNeR4142 avatar RuNNeR4142 396 Точки

Грешка, аз по навик си направих променлива за закупените но на тази задача може и без отделна
защото програмата спира ако не стигат парите. Още в началото като прочетох на изхода 
{брой на закупените продукти} и Всеки трети продукт..  ги направих и двете променливи.

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