Loading...

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

Ivanstpv avatar Ivanstpv 2 Точки

Java Basics Exam 28/29.03.2020 06.Tournament Of Christmas Въпрос

https://pastebin.com/icpjed83

Здравейте мъчих тази задачка около час и половина и нещо все пропускам, получих 50/100 в Judge. Предполам че проблема при булевите променливи или получаването на безкраен цикъл (while) при някои входни данни. Ще съм благодарен за обяснение или вярно решение. Поздрави!

 

Изпит по "Основи на програмирането" – 28 и 29 март 2020

 

Задача 6. Коледен турнир

Напишете програма, която проследява представянето на вашия отбор на благотворителен коледен турнир.  Всеки ден получавате имена на игри до команда "Finish". Със спечелването на всяка една игра печелите по 20лв. за благотворителност. Трябва да изчислите колко пари сте спечелили на края на деня. Ако имате повече спечелени игри, отколкото загубени – вие сте победители този ден и увеличавате парите от него с 10%. При приключване на турнира ако през повечето дни сте били победители печелите турнира и увеличавате всичките спечелени пари с 20%.

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

Вход

Първоначално от конзолата се прочита броя дни на турнира – цяло число в интервала [1… 20]

До получаване на командата "Finish" се чете:

  • Спорт  – текст

За всеки спорт се прочита:

  • Резултат  – текст с възможности: "win" или "lose"

Изход

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

  • Ако сте спечелили турнира:

     "You won the tournament! Total raised money: {спечелените пари}"

  • Ако сте загубили на турнира:

"You lost the tournament! Total raised money: {спечелените пари}"

Парите да бъдат форматирани до втората цифра след десетичния знак.

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

Вход

Изход

Обяснения

2

volleyball

win

football

lose

basketball

win

Finish

golf

win

tennis

win

badminton

win

Finish

You won the tournament! Total raised money: 132.00

Турнирът е 2 дена.

Първият ден:

Играем волейбол и печелим -> 20лв.

Играем футбол и губим -> 0лв.

Играем баскетбол и печелим -> 20лв.

Получаваме команда Finish и игрите за деня приключват. Спечелените пари 20 + 0 + 20 = 40лв. Имаме повече спечелени игри, отколкото загубени съответно увеличаваме парите от деня с 10% -> 44лв.

Втори ден:

Играем голф и печелим -> 20лв.

Играем тенис и печелим -> 20лв.

Играем бадминтон и печелим -> 20лв.

Получаваме команда Finish и игрите за деня приключват. Спечелените пари 20 + 20 + 20 = 60лв. Имаме само спечелени игри съответно увеличаваме парите от деня с 10% -> 66лв.

Спечелените пари от двата дена: 44 + 66 = 110лв.

Тъй като имаме повече победи, отколкото загуби, печелим турнира и увеличаваме парите с 20% -> 132лв.

3

darts

lose

handball

lose

judo

win

Finish

snooker

lose

swimming

lose

squash

lose

table tennis

win

Finish

volleyball

win

basketball

win

Finish

You lost the tournament! Total raised money: 84.00

 

 

Тагове:
0
Programming Basics with Java 31/03/2020 16:48:56
Ogito10 avatar Ogito10 1 Точки

Цял ден се борих с тази задача и в крайна сметка упоритостта ми надделя. Judge накрая клекна и даде ^^^^^^^^^^ Това е на C# Вие вече си го преведете на Java.

using System;
using System.Threading;
using System.Transactions;
using System.Xml.XPath;

namespace _06.TournamentofChristmas
{
    class Program
    {
        static void Main(string[] args)
        {
            int daysOfTournament = int.Parse(Console.ReadLine());

            double amount = 0;   // Тук запазваме и инкрементираме сумите за една игра при краен резултат "Win"! 
            double totalAmount = 0;  // Тук инкрементираме натрупаните суми от победи за целия ден !

            int totalWin = 0;   // Броим общо победите за целия турнир !      
            int totalLose = 0;  // Броим общо загубите за целия турнир !

            int resultWin = 0;    // Броим общо победите за деня !            
            int resultLose = 0;   // Броим общо загубите за деня !
            int days = 0;  // Броим деня на турнира, като внимаваме къде трябва да го инкрементираме!
            bool isGameEnd = false; // Нуждаем се от нея за да приключим турнира! 


            while (true)
            {
                
                isGameEnd = false;
               
                while (days < daysOfTournament)
                {
                        string sportType = Console.ReadLine();

                        if (sportType == "Finish")
                        {
                            break;  
                        }

                        string result = Console.ReadLine();

                        if (result == "win")
                        {
                            resultWin++; // целия ден
                            totalWin++;  // целия турнир !   
                            amount += 20;
                        }

                        if (result == "lose")
                        {
                            resultLose++; // целия ден
                            totalLose++;   // целия турнир !   
                        }

                }


               if (resultWin > resultLose)
                {
                    isGameEnd = false;
                    amount += amount * 0.10;
                }


                else if (resultWin <= resultLose)
                {
                    isGameEnd = false;  // Защото турнирът продължава, докато броячът за дните не се изравни с дните на турнира, като тук покриваме и условието, че неможе победите и загубите да са равни! 
                }

                totalAmount += amount;  // Натрупваме общата сума от победи през деня!

                amount = 0;
                resultWin = 0;     
                resultLose = 0; // Зануляваме спечелената дневна сума и броят победи и загуби, за да не ни се объркат сметките за следващия ден!

                days++;

                if (days < daysOfTournament)
                {
                    isGameEnd = false; // Защото турнирът продължава, докато броячът за дните не се изравни с дните на турнира!
                    continue;
                }

                else
                {
                    isGameEnd = true; // Приключваме турнира, защото броячът е изравнил дните!
                    break;
                }
            }


            if (totalWin > totalLose)
            {
                totalAmount += totalAmount * 0.20; // Натрупваме и +20%  общата сума от победи през турнира!
                Console.WriteLine($"You won the tournament! Total raised money: {totalAmount:F2}");
            }

            else if (totalWin < totalLose)
            {
                Console.WriteLine($"You lost the tournament! Total raised money: {totalAmount:F2}");
            }
        }
    }
}
 

Дано съм бил полезен ! Успех и кураж ! smiley

0
01/11/2020 05:23:32
River avatar River 0 Точки

Борбата е безмилостно жестока! ;) И аз след половин ден мъки, се преборих единствено след като пренаписах този код от C# на Python. Благодаря и да го предам нататък:

https://pastebin.com/DyGiPH1g

0
18/06/2021 18:20:22
Hristinchet0 avatar Hristinchet0 2 Точки

Жив и здрав да си колега... преписах я и аз... само че на Java. Благодаря.

0
tripTiPscout avatar tripTiPscout 24 Точки

Здравей!

Ето едно решение на Java, което ще те насочи в правилната посока.

https://pastebin.com/U3FgAfs5

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

Булевите в случая не ти вършат работата, която ти е необходима.

 

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