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 лева. |
Разместих 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;
}
}
}
}
}
}
Сега пък първо купуваш продукта на правилната цена
и после проверяваш дали ти стигат парите да купиш продукта.
Още разместване.
нещо не включвам какво друго може да се размества?!
Никъде не допускаш варианта входът на productPrice да ти е "Stop". Съответно първо следва да го декларираш като string и след това да го парснеш.
Редакция: - не е това проблемът, явно написаният по-горе вариант е изключен по default.
Трябва една промелива за брояча на продукти и друга променлива за броят на закупени продукти.
Промених малко кода дава сега 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;
}
}
}
}
}
Грешка, аз по навик си направих променлива за закупените но на тази задача може и без отделна
защото програмата спира ако не стигат парите. Още в началото като прочетох на изхода
{брой на закупените продукти} и Всеки трети продукт.. ги направих и двете променливи.